Подтвердить что ты не робот

Лучшие практики управления версиями Maven

Каков наилучший способ изменить версию проекта Maven, чтобы выпустить эту версию, а затем вернуться к разработке *-SNAPSHOT.

В настоящее время я делаю следующее:

  • извлечь текущую версию (скорее всего с помощью SNAPSHOT) из pom.xml
  • increment version (mvn -DnewVersion=<something> versions:set), соблюдая правила, описанные в вопросе версия артефакта Maven для патчей
  • mvn:install для отправки в репо
  • переименование версии с добавлением SNAPSHOT postfix.
  • совершение изменений (с использованием некоторой системы контроля версий)

У меня сильное чувство, что я делаю что-то неправильно и/или неэффективно.

4b9b3361

Ответ 1

Вы можете использовать maven-release-plugin для выпуска своих артефактов. Затем автоматически все ваши версии будут увеличиваться с помощью плагина release. Исключение может быть, если вы переходите от 1.0.3-SNAPSHOT к 1.1.0-SNAPSHOT. Сроки разработки с Maven:

1.0.0-SNAPSHOT
1.0.0
1.0.1-SNAPSHOT
1.0.1
1.0.2-SNAPSHOT
1.0.2
..

Чтобы перейти к шагу от SNAPSHOT до версии выпуска, вы должны использовать плагин релиза maven, вы можете выпустить артефакт, просто используя:

Первый шаг:

mvn release:prepare 

Последний шаг:

mvn release:perform

Если вы хотите принять значения по умолчанию, вы можете просто добавить -B как:

mvn -B release:prepare 

или вы можете объединить эти шаги в один:

mvn -B release:prepare release:perform

Вышеупомянутое также может быть использовано из решения CI.

Использование mvn install предназначено только для установки артефактов в ваш локальный репозиторий. Если вы работаете с реальным, как менеджер хранилища (который я могу рекомендовать), вы должны использовать:

mvn deploy 

Одним из требований для использования плагина выпуска является настройка области scm в вашем pom (надеюсь, вы используете элемент управления версиями?).

Ответ 2

Если вы хотите больше контролировать фазу выпуска, maven-release-плагин (mrp) вам не поможет.

В этом случае у меня есть измененные версии-maven-plugin, чтобы иметь возможность увеличивать версию, а также добавлять/удалять суффикс SNAPSHOT.

Благодаря этим новым функциям вы можете написать script, которые делают то же самое, что и mrp, но у вас есть полный контроль над каждым шагом.

Например, mrp фиксирует измененную версию, прежде чем она попытается ее создать. Если сборка завершилась неудачей, вы должны вернуть это сообщение или, в случае SVN, вам нужно выполнить еще один возврат-commit.

Примечание. Я не являюсь оригинальным автором функции increment. Я его принял от autoincrement-версий-maven-plugin, как указано на странице github.