Лучшее решение, которое я смог найти, состоит из следующих шагов:
- Создать ветку под названием
mvn-repo для размещения ваших артефактов maven.
- Используйте github site-maven-plugin чтобы перенести ваши артефакты в github.
- Сконфигурируйте maven для использования вашего пульта
mvn-repoв качестве хранилища maven.
Есть несколько преимуществ использования этого подхода:
- Maven-артефакты хранятся отдельно от вашего источника в отдельной ветке, называемой так же
mvn-repo, как страницы github хранятся в отдельной ветке, называемойgh-pages (если вы используете страницы github)
- В отличие от некоторых других предлагаемых решений, это не противоречит вашим
gh-pages если вы их используете.
- Естественно связывается с целью развертывания, поэтому нет новых команд maven для изучения. Просто используйте
mvn deployкак обычно
Типичным способом развертывания артефактов в удаленном репозитории Maven является использование mvn deploy , поэтому давайте исправим этот механизм для этого решения.
Сначала скажите maven развернуть артефакты во временной промежуточной папке внутри вашей целевой директории. Добавьте это к вашему pom.xml:
<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>
Теперь попробуйте запустить mvn clean deploy. Вы увидите, что он развернул ваш репозиторий Maven target/mvn-repo. Следующий шаг - заставить его загрузить этот каталог в GitHub.
Добавьте вашу аутентификационную информацию, ~/.m2/settings.xmlчтобы github site-maven-pluginмог отправить ее на GitHub:
<!-- NOTE: MAKE SURE THAT settings.xml IS NOT WORLD READABLE! -->
<settings>
<servers>
<server>
<id>github</id>
<username>YOUR-USERNAME</username>
<password>YOUR-PASSWORD</password>
</server>
</servers>
</settings>
(Как уже было отмечено, убедитесь, что chmod 700 settings.xmlникто не может прочитать ваш пароль в файле. Если кто-то знает, как заставить site-maven-plugin запрашивать пароль, а не запрашивать его в файле конфигурации, дайте мне знать.)
Затем расскажите GitHub site-maven-pluginо новом сервере, который вы только что настроили, добавив следующее в ваш pom:
<properties>
<!-- github server corresponds to entry in ~/.m2/settings.xml -->
<github.global.server>github</github.global.server>
</properties>
Наконец, настройте site-maven-pluginзагрузку из вашего временного репозитория в вашу mvn-repoветку на Github:
<build>
<plugins>
<plugin>
<groupId>com.github.github</groupId>
<artifactId>site-maven-plugin</artifactId>
<version>0.11</version>
<configuration>
<message>Maven artifacts for ${project.version}</message> <!-- git commit message -->
<noJekyll>true</noJekyll> <!-- disable webpage processing -->
<outputDirectory>${project.build.directory}/mvn-repo</outputDirectory> <!-- matches distribution management repository url above -->
<branch>refs/heads/mvn-repo</branch> <!-- remote branch name -->
<includes><include>**/*</include></includes>
<repositoryName>YOUR-REPOSITORY-NAME</repositoryName> <!-- github repo name -->
<repositoryOwner>YOUR-GITHUB-USERNAME</repositoryOwner> <!-- github username -->
</configuration>
<executions>
<!-- run site-maven-plugin's 'site' target as part of the build's normal 'deploy' phase -->
<execution>
<goals>
<goal>site</goal>
</goals>
<phase>deploy</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
mvn-repoВетви не должны существовать, он будет создан для вас.
Теперь беги mvn clean deployснова. Вы должны увидеть, что maven-deploy-plugin «загружает» файлы в локальный промежуточный репозиторий в целевом каталоге, а затем site-maven-plugin фиксирует эти файлы и отправляет их на сервер.
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building DaoCore 1.3-SNAPSHOT
[INFO] ------------------------------------------------------------------------
...
[INFO] --- maven-deploy-plugin:2.5:deploy (default-deploy) @ greendao ---
Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/1.3-SNAPSHOT/greendao-1.3-20121223.182256-3.jar (77 KB at 2936.9 KB/sec)
Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/1.3-SNAPSHOT/greendao-1.3-20121223.182256-3.pom (3 KB at 1402.3 KB/sec)
Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/1.3-SNAPSHOT/maven-metadata.xml (768 B at 150.0 KB/sec)
Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/maven-metadata.xml (282 B at 91.8 KB/sec)
[INFO]
[INFO] --- site-maven-plugin:0.7:site (default) @ greendao ---
[INFO] Creating 24 blobs
[INFO] Creating tree with 25 blob entries
[INFO] Creating commit with SHA-1: 0b8444e487a8acf9caabe7ec18a4e9cff4964809
[INFO] Updating reference refs/heads/mvn-repo from ab7afb9a228bf33d9e04db39d178f96a7a225593 to 0b8444e487a8acf9caabe7ec18a4e9cff4964809
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.595s
[INFO] Finished at: Sun Dec 23 11:23:03 MST 2012
[INFO] Final Memory: 9M/81M
[INFO] ------------------------------------------------------------------------
Посетите github.com в своем браузере, выберите mvn-repoветку и убедитесь, что все ваши двоичные файлы уже есть.

Поздравляем!
Теперь вы можете развернуть свои артефакты maven в публичном репо бедного человека, просто запустив его mvn clean deploy.
Есть еще один шаг, который вы хотите сделать, это настроить любые poms, которые зависят от вашего pom, чтобы знать, где находится ваш репозиторий. Добавьте следующий фрагмент к pom любого проекта, который зависит от вашего проекта:
<repositories>
<repository>
<id>YOUR-PROJECT-NAME-mvn-repo</id>
<url>https://github.com/YOUR-USERNAME/YOUR-PROJECT-NAME/raw/mvn-repo/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
Теперь любой проект, которому требуются ваши jar-файлы, будет автоматически загружать их из вашего репозитория github maven.
Редактировать: чтобы избежать проблемы, упомянутой в комментариях («Ошибка создания коммита: неправильный запрос. Для« properties / name »nil не является строкой»), убедитесь, что вы указали имя в своем профиле на github.