Как сделать небольшую библиотеку с открытым исходным кодом доступной для других разработчиков через 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 . |