Указание даты в теге, сгенерированном maven-release-plugin - PullRequest
4 голосов
/ 16 января 2012

В рамках нашего проекта мы объявляем наши 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: создать выпуск: подготовить

1 Ответ

4 голосов
/ 23 февраля 2012

Начиная с Maven 2.1, доступна переменная: maven.build.timestamp, которую можно настроить с помощью свойства:

<properties>
  <maven.build.timestamp.format>yyyyMMdd-HHmm</maven.build.timestamp.format>
</properties>

См .: http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Available_Variables

Это может сделать плагин buildnumberбольше не требуется и должен быть проще в использовании.

...