Как сделать небольшую библиотеку с открытым исходным кодом доступной для других разработчиков через 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> |
| Ссылка: | Размещение репозитория Maven на github (с источниками и javadoc) от нашего партнера по JCG Ифана Пенга в блоге PGuru . |