В рамках нашего проекта мы объявляем наши SVN-теги в формате:
ГГГГ-ММ-ДД - v {project.version} [$ {environment}]
например, 2012-01-16 - v1.0.1 [LIVE]
Возможно ли достичь этого с помощью плагина maven-release (версия 2.2.2)?
Стоит отметить, чточасти версии и среды получены и работают с плагином релиза.Это просто отметка времени, которая не может быть получена.
Это то, что я ожидал, будет работать:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.2.2</version>
<configuration>
<preparationGoals>clean verify</preparationGoals>
<tagNameFormat>${timestamp} - v@{project.version} [${env}]</tagNameFormat>
<checkModificationExcludes>
.
.
.
</checkModificationExcludes>
</configuration>
</plugin>
Свойство отметки времени успешно сгенерировано с использованием buildnumber-maven-plugin, так какон добавляется в файл манифеста для включения в файл war.
Я попытался добавить buildnumber: создать цель в целях подготовки, но при выполнении выпуска он выдает следующий результат: prepare
Что такое метка релиза SCM или метка для «Название проекта»?(abcd) null - v1.0.1 [LIVE]::
Кажется, проблема в том, что свойство timestamp не генерируется в момент установки tagName, который указывает, что цели подготовкине выполняется на этапе, запрашивает tagName.
Следующее может сработать (проверим его после обеда), хотя я бы предпочел просто позвонить релизу: prepare
mvnbuildnumber: создать выпуск: подготовить
Любой ввод приветствуется.
Приветствия
РЕДАКТИРОВАТЬ
Я проверил, используя buildnumber: create release: prepare, и он работает, как и ожидалось, хотя мне пришлось внести дополнительные изменения, которые, если честно, немного болезненны.
TagNameFormat в настоящее время содержит:
ГГГГ-ММ-ДД - v {project.version} [$ {environment}]
Содержит пробелы и квадратные скобки, и при выполнении в этом формате вы получите ошибкууказание URL-адреса неверно URIзакодирован.Чтобы обойти это, вы должны указать tagNameFormat в формате, который уже закодирован по URI, например:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.2.2</version>
<configuration>
<preparationGoals>clean verify</preparationGoals>
<tagNameFormat>${timestamp}%20-%20v@{project.version}%20%5B${env}%5D</tagNameFormat>
<checkModificationExcludes>
.
.
.
</checkModificationExcludes>
</configuration>
</plugin>
Это неприятно, но работает, и при необходимости создаст тег.
Было бы все еще интересно узнать, есть ли у кого-нибудь какие-либо предложения относительно того, как получить метку времени в tagNameFormat, просто выполнив:
выпуск mvn: подготовьте
, а не
mvn buildnumber: создать выпуск: подготовить