Статьи

Размещение репозитория Maven на github (с исходными кодами и javadoc)

Как сделать небольшую библиотеку с открытым исходным кодом доступной для других разработчиков через maven ? Один из способов — развернуть его в центральном репозитории Maven . Я хотел бы развернуть его на github , чтобы я мог свободно его модифицировать. Этот пост расскажет вам, как это сделать.

Типичный способ развертывания артефактов на github — использование mvn deploy . Вот шаги:

  • Используйте site-maven-plugin для отправки артефактов в github.
  • Используйте Maven-Javadoc-плагин, чтобы выдвинуть Javadoc
  • Используйте maven-source-plugin, чтобы выдвинуть источник
  • Настройте maven для использования удаленного mvn-repo в качестве репозитория maven

Настроить maven-deploy-plugin

Сначала я добавляю следующий фрагмент кода, чтобы сообщить maven о развертывании артефактов во временном расположении внутри моей целевой директории:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
<distributionManagement>
  <repository>
    <id>internal.repo</id>
    <name>Temporary Staging Repository</name>
    <url>file://${project.build.directory}/mvn-repo</url>
  </repository>
</distributionManagement>
<plugins>
  <plugin>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.8.1</version>
    <configuration>
      <altDeploymentRepository>
      internal.repo::default::file://${project.build.directory}/mvn-repo
      </altDeploymentRepository>
    </configuration>
  </plugin>
</plugins>

Настроить Maven

Затем я добавляю информацию об аутентификации на github.com в ~/.m2/settings.xml чтобы плагин github site-maven-plugin мог отправить ее на github:

1
2
3
4
5
6
7
8
<settings>
  <servers>
    <server>
      <id>github</id>
      <password>OAUTH2TOKEN</password>
    </server>
  </servers>
</settings>

или же

1
2
3
4
5
6
7
8
9
<settings>
  <servers>
    <server>
      <id>github</id>
      <username>GitHubLogin</username>
      <password>GitHubPassw0rd</password>
    </server>
  </servers>
</settings>

Лично я предпочитаю первый способ, потому что он безопаснее (без явного указания пароля). Чтобы получить OAUTH2TOKEN проекта github, перейдите в settings --> Applications --> Genreate new token

Настроить сайт-maven-плагин

Сконфигурируйте site-maven-plugin для загрузки из моего временного местоположения в ветку mvn-repo на github:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<plugin>
  <groupId>com.github.github</groupId>
  <artifactId>site-maven-plugin</artifactId>
  <version>0.9</version>
  <configuration>
    <message>Maven artifacts for ${project.version}</message>
    <noJekyll>true</noJekyll>
    <outputDirectory>${project.build.directory}/mvn-repo
       </outputDirectory>
    <branch>refs/heads/mvn-repo</branch>
    <includes>
      <include>**/*</include>
    </includes>
    <repositoryName>pengyifan-commons</repositoryName>
    <repositoryOwner>yfpeng</repositoryOwner>
    <server>github</server>
  </configuration>
  <executions>
    <execution>
      <goals>
        <goal>site</goal>
      </goals>
      <phase>deploy</phase>
    </execution>
  </executions>
</plugin>

Когда этот пост был написан, была ошибка в версии 0.9 site-maven-plugin . Чтобы обойти это, пожалуйста, сделайте git clone версии 0.10-SNAPSHOT и mvn install .

Настроить maven-source-plugin

Чтобы добавить пакет исходного кода в mvn-repo, нам нужно настроить плагин maven-source-plugin . Добавьте следующий код в pom.xml :

01
02
03
04
05
06
07
08
09
10
11
12
13
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-source-plugin</artifactId>
  <version>2.3</version>
  <executions>
    <execution>
      <id>attach-sources</id>
      <goals>
        <goal>jar</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Настроить maven-javadoc-плагин

Чтобы добавить пакет java doc в mvn-repo, нам нужно настроить плагин maven-javadoc . Добавьте следующий код в pom.xml :

01
02
03
04
05
06
07
08
09
10
11
12
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-javadoc-plugin</artifactId>
  <executions>
    <execution>
      <id>attach-javadocs</id>
      <goals>
        <goal>jar</goal>
      </goals>
  </execution>
  </executions>
</plugin>

Теперь запустите mvn clean deploy . Я видел, как maven-deploy-plugin «загружает» файлы в мой локальный промежуточный репозиторий в целевой директории, затем site-maven-plugin фиксирует эти файлы и отправляет их на сервер.

Чтобы проверить наличие всех двоичных файлов, зайдите в браузер на github и выберите ветку mvn-repo .

Настройте maven для использования удаленного mvn-repo в качестве репозитория maven

Есть еще один шаг, который мы должны сделать, это настроить любые poms, чтобы знать, где находится наш репозиторий. Мы можем добавить следующий фрагмент в pom.xml любого проекта:

01
02
03
04
05
06
07
08
09
10
<repositories>
  <repository>
    <id>PROJECT-NAME-mvn-repo</id>
    <snapshots>
      <enabled>true</enabled>
      <updatePolicy>always</updatePolicy>
    </snapshots>
  </repository>
</repositories>