У меня есть вилка из небольшой библиотеки с открытым исходным кодом, над которой я работаю на github. Я хотел бы сделать его доступным для других разработчиков через maven, но я не хочу запускать свой собственный сервер Nexus, и, поскольку это форк, я не могу легко развернуть его на oss.sonatype.org.
Я хотел бы развернуть его на github, чтобы другие могли получить к нему доступ через maven. Какой лучший способ сделать это?
maven
github
github-pages
mvn-repo
emmby
источник
источник
Ответы:
Лучшее решение, которое я смог найти, состоит из следующих шагов:
mvn-repo
для размещения ваших артефактов maven.mvn-repo
в качестве хранилища maven.Есть несколько преимуществ использования этого подхода:
mvn-repo
, как страницы github хранятся в отдельной ветке, называемойgh-pages
(если вы используете страницы github)gh-pages
если вы их используете.mvn deploy
как обычноТипичным способом развертывания артефактов в удаленном репозитории Maven является использование
mvn deploy
, поэтому давайте исправим этот механизм для этого решения.Сначала скажите maven развернуть артефакты во временной промежуточной папке внутри вашей целевой директории. Добавьте это к вашему
pom.xml
:Теперь попробуйте запустить
mvn clean deploy
. Вы увидите, что он развернул ваш репозиторий Maventarget/mvn-repo
. Следующий шаг - заставить его загрузить этот каталог в GitHub.Добавьте вашу аутентификационную информацию,
~/.m2/settings.xml
чтобы githubsite-maven-plugin
мог отправить ее на GitHub:(Как уже было отмечено, убедитесь, что
chmod 700 settings.xml
никто не может прочитать ваш пароль в файле. Если кто-то знает, как заставить site-maven-plugin запрашивать пароль, а не запрашивать его в файле конфигурации, дайте мне знать.)Затем расскажите GitHub
site-maven-plugin
о новом сервере, который вы только что настроили, добавив следующее в ваш pom:Наконец, настройте
site-maven-plugin
загрузку из вашего временного репозитория в вашуmvn-repo
ветку на Github:mvn-repo
Ветви не должны существовать, он будет создан для вас.Теперь беги
mvn clean deploy
снова. Вы должны увидеть, что maven-deploy-plugin «загружает» файлы в локальный промежуточный репозиторий в целевом каталоге, а затем site-maven-plugin фиксирует эти файлы и отправляет их на сервер.Посетите github.com в своем браузере, выберите
mvn-repo
ветку и убедитесь, что все ваши двоичные файлы уже есть.Поздравляем!
Теперь вы можете развернуть свои артефакты maven в публичном репо бедного человека, просто запустив его
mvn clean deploy
.Есть еще один шаг, который вы хотите сделать, это настроить любые poms, которые зависят от вашего pom, чтобы знать, где находится ваш репозиторий. Добавьте следующий фрагмент к pom любого проекта, который зависит от вашего проекта:
Теперь любой проект, которому требуются ваши jar-файлы, будет автоматически загружать их из вашего репозитория github maven.
Редактировать: чтобы избежать проблемы, упомянутой в комментариях («Ошибка создания коммита: неправильный запрос. Для« properties / name »nil не является строкой»), убедитесь, что вы указали имя в своем профиле на github.
источник
<merge>true</merge>
в вашей конфигурации site-maven-plugin. Если вы сделаете это, я думаю, вам придется вручную создать ветку mvn-repo в github и удалить все ее файлы в первый раз.<altDeploymentRepository>internal.repo::default::file://${user.dir}/target/mvn-repo</altDeploymentRepository>
с Maven-развертывания-плагин , и<outputDirectory>${user.dir}/target/mvn-repo</outputDirectory>
с сайта-Maven-плагин . Это развернет все артефакты в корневом («родительском») проекте и отправит их в соответствующий родительский каталог на github. В противном случае, сборка каждого субмодуля будет перезаписывать сборку субмодуля, созданного до ...<github.global.userName>YourUserName</github.global.userName> <github.global.password>${GITHUB_OAUTH_TOKEN</github.global.password>
Не используйте GitHub в качестве репозитория Maven.
Изменить: эта опция получает много отрицательных голосов, но без комментариев, почему. Это правильный вариант, независимо от технических возможностей для размещения на GitHub. Хостинг на GitHub неправильный по всем причинам, изложенным ниже, и без комментариев я не могу улучшить ответ, чтобы прояснить ваши проблемы.
Лучший вариант - сотрудничать с оригинальным проектом
Лучший вариант - убедить исходный проект включить ваши изменения и придерживаться оригинала.
Альтернатива - поддерживать свой собственный Fork
Поскольку вы разветвили библиотеку с открытым исходным кодом, и ваш форк также является открытым исходным кодом, вы можете загрузить свой форк в Maven Central (см. Руководство по загрузке артефактов в центральное хранилище ), предоставив ему новое
groupId
и, возможно, новоеartifactId
.Рассматривайте этот вариант только в том случае, если вы хотите сохранить этот форк до тех пор, пока изменения не будут включены в исходный проект, и тогда вам следует отказаться от этого.
Действительно подумайте, является ли вилка правильным вариантом. Прочитайте бесчисленные результаты Google, чтобы узнать, почему бы не раскошелиться
аргументация
Раздувание вашего хранилища банками увеличивает размер загрузки без пользы
Jar - это
output
ваш проект, он может быть восстановлен в любое время из егоinputs
, и ваше репозиторий GitHub должно содержать толькоinputs
.Не веришь мне? Затем проверьте результаты Google на предмет «не хранить бинарные файлы в git» .
Помощь GitHub Работа с большими файлами скажет вам то же самое. По общему признанию, jar не большие, но они больше, чем исходный код, и после того, как jar был создан релизом, у него нет причин для версионирования - для этого и нужен новый выпуск.
Определение нескольких репозиториев в вашем pom.xml замедляет сборку на количество репозиториев, умноженное на количество артефактов.
Стивен Коннолли говорит :
Это правильно! Maven должен проверять каждый артефакт (и его зависимости), определенные в вашем pom.xml, для каждого определенного вами репозитория , поскольку более новая версия может быть доступна в любом из этих репозиториев.
Попробуйте сами, и вы почувствуете боль от медленного телосложения.
Лучшее место для артефактов - в Maven Central, поскольку оно является центральным местом для банок, и это означает, что ваша сборка будет когда-либо проверять только одно место.
Вы можете прочитать больше о репозиториях в документации Maven по введению в репозитории.
источник
Вы можете использовать JitPack (бесплатно для общедоступных репозиториев Git), чтобы представить свой репозиторий GitHub как артефакт Maven. Это очень просто. Ваши пользователи должны добавить это в свой pom.xml:
Как ответили в другом месте говорилось в идея заключается в том, что JitPack создаст ваш репозиторий GitHub и будет обслуживать банки. Требуется, чтобы у вас был файл сборки и выпуск GitHub.
Приятно то, что вам не нужно обрабатывать развертывание и загрузку. Так как вы не хотели поддерживать свой собственный репозиторий артефактов, он хорошо подходит для ваших нужд.
источник
Другой альтернативой является использование любого веб-хостинга с поддержкой webdav. Вам, конечно, понадобится место для этого где-то, но его легко настроить, и это хорошая альтернатива использованию полноценного сервера Nexus.
добавьте это в свой раздел сборки
Добавьте что-то подобное в ваш раздел управления дистрибуцией
Наконец, убедитесь, что вы настроили доступ к хранилищу в вашем файле settings.xml
добавьте это в ваш раздел серверов
и определение вашего раздела репозиториев
Наконец, если у вас есть какой-либо стандартный хостинг php, вы можете использовать что-то вроде sabredav для добавления возможностей webdav.
Преимущества: у вас есть собственный репозиторий Maven Недостатки: у вас нет никаких возможностей управления в Nexus; вам нужно где-то настроить webdav
источник
Начиная с 2019 года, теперь вы можете использовать новую функциональность, называемую реестром пакетов Github .
В основном процесс таков:
settings.xml
развернуть с помощью
источник
В качестве альтернативы Bintray предоставляет бесплатный хостинг репозиториев Maven . Это, вероятно, хорошая альтернатива Sonatype OSS и Maven Central, если вы абсолютно не хотите переименовывать groupId. Но, пожалуйста, по крайней мере, приложите усилия, чтобы ваши изменения были интегрированы в апстрим или переименованы и опубликованы в Central. Другим намного легче использовать вашу вилку.
источник
Если у вас есть только
aar
илиjar
сам файл, или просто не хотите использовать плагины - я создал простой скрипт оболочки . Вы можете добиться того же с ним - опубликовать свои артефакты на Github и использовать его в качестве публичного репозитория Maven.источник