Maven: измените свойства версии в pom.xml
У меня есть Maven pom.xml, я создаю проект и проект выпуска развертывания с Jenkins.
Но до и после сборки "версия выпуска" нам нужно установить мою версию в
Например:
У меня есть pom.xml
<properties>
<version-own>0.0.21-SNAPSHOT</version-own>
</properties>
перед выпуском мне нужно установить такой
<properties>
<version-own>0.0.25</version-own>
</properties>
после релиза мне нужно установить такой
<properties>
<version-own>0.0.27-SNAPSHOT</version-own>
</properties>
Как это можно сделать?
Ответы
Ответ 1
Если вам не нужно использовать собственное свойство версии, рассмотрите следующее, которое будет работать с вашим элементом <project><version>0.0.21-SNAPSHOT</version></project>
:
mvn versions:set versions:commit -DnewVersion="0.0.25"
Это изменит ваш pom и настроит версию по своему вкусу. Скорее всего, вы захотите зафиксировать это изменение в своем репозитории управления исходным кодом, так как плагин scm plm: checkin цели прекрасно работает (если вы хотите, чтобы это было автоматизировано):
mvn scm:checkin -Dincludes=pom.xml -Dmessage="Setting version, preping for release."
Затем вы можете выполнить выпуск (я рекомендую maven-release-plugin), после чего вы можете установить новую версию и зафиксировать ее как указано выше.
Плагин версий является вашим другом. Сценарии выше, скорее всего, будут связаны с некоторой параметризованной сборкой или, предпочтительно, с плагином groovy для дженкинсов, который позволяет вам получить переменные сборки, определенные в maven.
Ответ 2
Для начала вы можете сделать это вручную. Если ваша сборка хорошо соответствует правилам maven, возможно, вы можете использовать один из нескольких плагинов maven, которые существуют для помощи в управлении номерами версий.
maven-versions-plugin помогает автоматизировать ручные изменения номеров версий. У этого есть приятные команды CLI, чтобы помочь настроить ваши поры перед выпуском.
Затем существует maven-release-plugin, который автоматизирует весь процесс сокращения выпуска. Он изменит ваш снимок на версию выпуска, а затем свернет его до следующего моментального снимка после сборки релиза. Во время всего этого процесса он записывает дискретные версии poms в исходное управление.
Опять же, секрет того, что успех в более автоматизированных битах сообщества maven заключается в том, делает ли ваша сборка все что-то вроде maven или нет. Взломанные, сильно измененные, нетрадиционные сборки обычно имеют множество препятствий для успешного использования плагина выпуска.
Ответ 3
Есть один путь к этому легко. С помощью одной команды вы можете изменить любую часть, которую хотите:
Для вырезания и вставки:
mvn build-helper:parse-version versions:set -DbuildNumber=555 '-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-${buildNumber}'
Для наглядности:
mvn build-helper:parse-version versions:set -DbuildNumber=555
'-DnewVersion=
${parsedVersion.majorVersion}
.${parsedVersion.minorVersion}
.${parsedVersion.incrementalVersion}
-${buildNumber}'
Это краткий пример того, как обновлять версии за один раз со значениями построения
Ответ 4
Плагин Build-helper поддерживает регулярные выражения и может даже анализировать номера версий, если это необходимо.
http://www.mojohaus.org/build-helper-maven-plugin/
Ответ 5
Есть что-то вроде parsedVersion.nextIncrementalVersion
mvn build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} versions:commit
Ответ 6
Глядя на это comment, вы описываете, что используете эту версию для обеспечения зависимости. maven-release-plugin должен помочь вам управлять версиями для вас. Поэтому предоставьте плагин в вашем pom.xml.
И для того, чтобы вручную предоставить версию выпуска и разработки, создайте задание в jenkins, которое будет иметь 2 строковых параметра:
developmentVersion
releaseVersion
Добавьте "Вызовите цели Maven для верхнего уровня", чтобы выполнить выпуск (например):
clean release:clean release:prepare release:perform -DdevelopmentVersion=${developmentVersion} -DreleaseVersion=${releaseVersion}
При создании задания будет предложено вставить как developmentVersion, так и releaseVersion.
Cheers,
Деспот