Лучшие практики управления версиями Maven [закрыто]
каков наилучший способ изменить версию проекта Maven, чтобы выпустить эту версию, а затем вернуться обратно в *-SNAPSHOT
развитие.
в настоящее время я делаю следующее:
- получить текущую версию (скорее всего, с
SNAPSHOT
) отpom.xml
- инкремент версии (
mvn -DnewVersion=<something> versions:set
), соблюдая правила, описанные в вопросе Maven artifact version for patches -
mvn:install
отправить в репо - переименование версии один раз снова добавляем
SNAPSHOT
постфикс. - фиксация изменений (с помощью некоторой системы управления версиями)
у меня есть сильное чувство, что я делаю что-то неправильно и/или неэффективно.
2 ответа:
вы должны использовать Maven-release-plugin чтобы освободить ваши артефакты. Чем автоматически все ваши версии будут увеличены релиз-плагин. Исключение может быть, если вы переходите от 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 ..
чтобы перейти к шагу от снимка к версии выпуска, вы должны использовать плагин Maven release вы можете освободить артефакт просто с помощью:
первый шаг:
mvn release:prepare
заключительный шаг:
mvn release:perform
если вы хотите принять значения по умолчанию, вы можете просто добавить -Б так:
mvn -B release:prepare
или вы можете объединить эти действия в одно:
mvn -B release:prepare release:perform
вышеуказанное можно также использовать изнутри решения ки.
использование mvn install предназначено только для установки артефактов в локальное хранилище. Если вы работаете с реальным, как менеджер репозитория (который я могу рекомендовать) вы должны использовать:
mvn deploy
одним из требований для использования плагина выпуска является настройка области scm в вашем pom (я надеюсь, что вы используете контроль версий?).
Если вы хотите больше контроля над фазой выпуска, Maven-release-plugin (mrp) не поможет вам много.
в таком случае у меня есть измененные версии-maven-plugin чтобы иметь возможность увеличить версию, а также добавить / удалить суффикс моментального снимка.
благодаря этим новым функциям вы можете написать сценарий, который делает то же самое, что и mrp, но у вас есть полный контроль над каждым шагом.
например, mrp фиксирует измененную версию до он на самом деле пытается построить его. Если сборка завершается неудачно, вы должны отменить эту фиксацию или, в случае SVN, вы должны сделать еще одну revert-commit.
примечание: Я не являюсь оригинальным автором функции инкремента. Я принял его от autoincrement-версии-Maven-плагин, как указано на странице github.