Лучшие практики управления версиями Maven
Каков наилучший способ изменить версию проекта Maven, чтобы выпустить эту версию, а затем вернуться к разработке *-SNAPSHOT
.
В настоящее время я делаю следующее:
- извлечь текущую версию (скорее всего с помощью
SNAPSHOT
) из pom.xml
- increment version (
mvn -DnewVersion=<something> versions:set
), соблюдая правила, описанные в вопросе версия артефакта Maven для патчей
-
mvn:install
для отправки в репо
- переименование версии с добавлением
SNAPSHOT
postfix.
- совершение изменений (с использованием некоторой системы контроля версий)
У меня сильное чувство, что я делаю что-то неправильно и/или неэффективно.
Ответы
Ответ 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.