1. Обзор
В этом руководстве мы поймем, как разместить репозиторий Maven на GitHub с исходниками с помощью плагина site-maven
. Это доступная альтернатива использованию репозитория, такого как Nexus.
2. Предпосылки
Нам нужно создать репозиторий для проекта Maven на GitHub, если у нас его еще нет. В этой статье мы используем один репозиторий « host-maven-repo-example
» и ветку « main
». Это пустой репозиторий на GitHub:
3. Проект Мавен
Давайте создадим простой проект Maven. Мы отправим сгенерированные артефакты этого проекта на GitHub.
Вот pom.xml
проекта:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.foreach.maven.plugin</groupId>
<artifactId>host-maven-repo-example</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<project>
Во-первых, нам нужно создать внутренний репозиторий локально в нашем проекте . Артефакт Maven будет развернут в этом месте в каталоге сборки проекта перед отправкой на GitHub.
Мы добавим определение локального репо в наш pom.xml
:
<distributionManagement>
<repository>
<id>internal.repo</id>
<name>Temporary Staging Repository</name>
<url>file://${project.build.directory}/mvn-artifact</url>
</repository>
</distributionManagement>
Теперь давайте добавим конфигурацию maven-deploy-plugin
в наш pom.xml
. Мы будем использовать этот плагин для добавления наших артефактов в локальный репозиторий в каталоге ${project.build.directory}/mvn-artifact
:
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<configuration>
<altDeploymentRepository>
internal.repo::default::file://${project.build.directory}/mvn-artifact
</altDeploymentRepository>
</configuration>
</plugin>
Кроме того, если мы хотим отправить исходные файлы с артефактами Maven на GitHub, нам также необходимо включить исходный плагин :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
После добавления указанных выше конфигураций и подключаемых модулей в pom.xml
сборка развернет артефакт Maven локально в каталоге target/mvn-artifact
.
Теперь следующим шагом будет развертывание этих артефактов на GitHub из локального каталога .
4. Настройте аутентификацию GitHub
Перед развертыванием артефактов на GitHub мы настроим информацию для аутентификации в ~/.
m2/settings.xml
. Это позволяет плагину site-maven отправлять
артефакты на GitHub.
В зависимости от того, как мы хотим пройти аутентификацию, мы добавим одну из двух конфигураций в наш файл settings.xml
. Давайте проверим эти варианты дальше.
4.1. Использование имени пользователя и пароля GitHub
Чтобы использовать имя пользователя и пароль GitHub, мы настроим их в нашем settings.xml
:
<settings>
<servers>
<server>
<id>github</id>
<username>your Github username</username>
<password>your Github password</password>
</server>
</servers>
</settings>
4.2. Использование токена личного доступа
Рекомендуемый способ аутентификации при использовании GitHub API или командной строки — использовать токен личного доступа (PAT) :
<settings>
<servers>
<server>
<id>github</id>
<password>YOUR GitHub OAUTH-TOKEN</password>
</server>
</servers>
</settings>
5. Отправьте Artifact на GitHub с помощью site-maven-plugin
И последний шаг — настроить плагин site-maven
для отправки нашего локального промежуточного репозитория . Это промежуточное репо находится в целевом
каталоге:
<plugin>
<groupId>com.github.github</groupId>
<artifactId>site-maven-plugin</artifactId>
<version>0.12</version>
<configuration>
<message>Maven artifacts for ${project.version}</message>
<noJekyll>true</noJekyll>
<outputDirectory>${project.build.directory}</outputDirectory>
<branch>refs/heads/${branch-name}</branch>
<includes>
<include>**/*</include>
</includes>
<merge>true</merge>
<repositoryName>${repository-name}</repositoryName>
<repositoryOwner>${repository-owner}</repositoryOwner>
<server>github</server>
</configuration>
<executions>
<execution>
<goals>
<goal>site</goal>
</goals>
<phase>deploy</phase>
</execution>
</executions>
</plugin>
В качестве примера для этого руководства предположим, что у нас есть репозиторий foreach/host-maven-repo-example
. Тогда значением тега репозиторияName
будет host-maven-repo-example
, а значением тега репозиторияOwner
будет foreach
.
Теперь мы выполним команду mvn deploy
, чтобы загрузить артефакт на GitHub . Основная ветвь
будет создана автоматически, если ее нет. После успешной сборки проверьте репозиторий на GitHub в браузере и в основной
ветке. Все наши бинарники будут присутствовать в репо.
В нашем случае это будет выглядеть так:
6. Заключение
Наконец, мы увидели, как размещать артефакты Maven на GitHub с помощью site-maven-plugin
.
Как всегда, код этих примеров доступен на GitHub .