Перейти к основному содержимому

Размещение репозитория Maven на GitHub

· 3 мин. чтения

1. Обзор

В этом руководстве мы поймем, как разместить репозиторий Maven на GitHub с исходниками с помощью плагина site-maven . Это доступная альтернатива использованию репозитория, такого как Nexus.

2. Предпосылки

Нам нужно создать репозиторий для проекта Maven на GitHub, если у нас его еще нет. В этой статье мы используем один репозиторий « host-maven-repo-example » и ветку « main ». Это пустой репозиторий на GitHub:

./dd0c72005859de62b94c13b3e3fc6bfe.png

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 в браузере и в основной ветке. Все наши бинарники будут присутствовать в репо.

В нашем случае это будет выглядеть так:

./7e3dbaa69555c0c7e884465016566416.png

6. Заключение

Наконец, мы увидели, как размещать артефакты Maven на GitHub с помощью site-maven-plugin .

Как всегда, код этих примеров доступен на GitHub .