Я недавно разработал Release Candidate Плагин Maven, который решает эту проблему, чтобы вам не приходилось прибегать к каким-либо хакерским сценариям оболочки и анализировать выходные данныеmaven-help-plugin
.
Например, чтобы напечатать версию вашего проекта Maven на терминале, запустите:
mvn com.smartcodeltd:release-candidate-maven-plugin:LATEST:version
, которая выдаст вывод, аналогичный maven-help-plugin
:
[INFO] Detected version: '1.0.0-SNAPSHOT'
1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
Однако вы также можете указать произвольный выходной формат (чтобы версия могла быть извлечена из журнала сервером CI, например TeamCity ):
mvn com.smartcodeltd:release-candidate-maven-plugin:LATEST:version \
-DoutputTemplate="##teamcity[setParameter name='env.PROJECT_VERSION' value='{{ version }}']"
Что приводит к:
[INFO] Detected version: '1.0.0-SNAPSHOT'
##teamcity[setParameter name='env.PROJECT_VERSION' value='1.0.0-SNAPSHOT']
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
Для сохранения вывода в файл (чтобы сервер CI, такой как Jenkins , мог использовать его ):
mvn com.smartcodeltd:release-candidate-maven-plugin:LATEST:version \
-DoutputTemplate="PROJECT_VERSION={{ version }}" \
-DoutputUri="file://\${project.basedir}/version.properties"
Полученный файл version.properties
будет выглядеть следующим образом:
PROJECT_VERSION=1.0.0-SNAPSHOT
Помимо всего вышеперечисленного, Release Candidate такжепозволяет установить версию вашего проекта (что вы, вероятно, будете делать на своем CI-сервере) на основе API-версииИон, который вы определили в своем POM.
Если вы хотите, чтобы пример Release Candidate использовался как часть жизненного цикла Maven, взгляните на pom.xml
моего другого открытого кода.проект - Сборка монитора для Jenkins .