How to Release to Maven Central, in One Click

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

Когда я выпускаю новую версию jcabi-aspects, библиотеки с открытым исходным кодом на Java, в Maven Central, это занимает 30 секунд моего времени. Может быть, даже меньше. Недавно я выпустил версию 0.17.2. Вы можете посмотреть, как это произошло, в GitHub issue #80:

Как видите, я дал команду Rultor, и он выпустил новую версию в Maven central. Я ничего больше не делал.

Теперь посмотрим, как вы можете сделать то же самое. Как настроить ваш проект, чтобы выпуск новой версии в Maven Central занимал всего несколько секунд вашего времени.

Кстати, я предполагаю, что вы разместили свой проект в GitHub. Если нет, весь этот учебник не будет работать. Если вы до сих пор не на GitHub, я настоятельно рекомендую перейти туда.

Убедитесь, что ваш pom.xml содержит все элементы, требуемые Sonatype, описанные в Central Sync Requirements. Мы развернем на Sonatype, и они синхронизируют все артефакты JAR (и не только) с Maven Central.

Создайте учетную запись в Sonatype JIRA и создайте тикет, с просьбой одобрить ваш groupId. Этот OSSRH Guide подробнее объясняет этот шаг.

Создайте GPG-ключ и распространите его, как объясняется в статье Работа с PGP-подписями.

По завершении этого шага у вас должно быть два файла: pubring.gpg и secring.gpg.

Создайте settings.xml рядом с двумя файлами .gpg, созданными на предыдущем шаге.

В этом примере 9A105525 - это идентификатор вашего открытого ключа, а my-secret - это парольная фраза, которую вы использовали при генерации ключей.

Теперь зашифруйте эти три файла с помощью удаленного rultor:

Вместо me/test вам следует использовать название вашего проекта на GitHub.

Вы получите три новых файла: pubring.gpg.asc, secring.gpg.asc и settings.xml.asc. Добавьте их в корневую директорию вашего проекта, сделайте коммит и отправьте изменения. Файлы содержат вашу секретную информацию, но только сервер Rultor может их расшифровать.

Я бы порекомендовал использовать jcabi-parent как родительский pom для вашего проекта. Это позволит избежать многих дополнительных шагов. Если вы уже используете jcabi-parent, пропустите этот шаг.

Однако, если вы не используете jcabi-parent, вам следует добавить эти два репозитория в ваш pom.xml:

Configure GPG Plugin

Снова рекомендую использовать jcabi-parent, который настраивает этот плагин автоматически. Если вы уже его используете, пропустите этот шаг.

В противном случае, добавьте этот плагин в ваш pom.xml:

Configure Versions Plugin

Еще раз рекомендую использовать http://parent.jcabi.com. Он настраивает все необходимые плагины “из коробки”. Если вы уже используете его, пропустите этот шаг.

В противном случае, добавьте этот плагин в свой pom.xml:

Configure Sonatype Plugin

Да, вы правы, http://parent.jcabi.com тоже поможет вам здесь. Если вы уже используете его, пропустите этот шаг.

В противном случае, добавьте эти четыре плагина в ваш pom.xml:

Create Rultor Configuration

Создайте файл .rultor.yml в корневом каталоге вашего проекта (страница справки подробно объясняет этот формат).

Вы можете сравнить свой файл с живой конфигурацией Rultor для jcabi-aspects.

Теперь пришло время узнать, как все это работает. Создайте новый тикет в трекере проблем GitHub и разместите что-то вроде этого в него (подробнее читайте о командах Rultor).

Вы получите ответ через несколько секунд. Остальное выполнит Rultor.

Кстати, если что-то не работает так, как я объяснил, не стесняйтесь отправить тикет в трекер проблем Rultor. Я постараюсь вам помочь.

Да, забыл упомянуть, Rultor также выполняет две важные функции. Во-первых, он создает релиз на GitHub с соответствующим описанием. Во-вторых, он публикует твит о релизе, который вы можете ретвитнуть, чтобы объявить своим подписчикам. Оба функционала очень удобны для меня. Например:

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-17 at 14:45

sixnines availability badge   GitHub stars