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,
Деспот