Как добавить информацию о метке времени в артефакты Maven?
Я обновляю большую систему сборки, чтобы использовать Maven2 вместо Ant, и у нас есть два связанных требования, которые я застрял:
-
нам нужно создать артефакт с отметкой времени, поэтому часть пакета фаза (или где угодно), а не построение
project-1.0-SNAPSHOT.jar
мы должно быть здание
project-1.0-20090803125803.jar
(где
20090803125803
- простоYYYYMMDDHHMMSS
отметка времени когда опарник построенный.)единственное реальное требование что отметка времени будет частью имя файла сгенерированного файла.
тот же штамп времени должен быть включен в версия.свойства внутри сгенерированной банки.
эта информация включена в сгенерированном пом.свойства при запуске,
например, mvn package
но закомментирован:
#Generated by Maven
#Mon Aug 03 12:57:17 PDT 2009
любые идеи о том, с чего начать, были бы полезны! Спасибо!
6 ответов
Maven версии 2.1.0-M1 или новее имеют встроенную специальную переменную maven.build.timestamp
.
<build>
<finalName>${project.artifactId}-${project.version}-${maven.build.timestamp}</finalName>
</build>
См. Maven документация для получения более подробной информации.
для старых версий Maven посмотрите на maven-timestamp-плагин или buildnumber-maven-плагин.
если вы используете Maven-timestamp-plugin, вы можете использовать что-то вроде этого для управления результирующим именем артефакта.
<build>
<finalName>${project.artifactId}-${project.version}-${timestamp}</finalName>
</build>
и этого настройки buildnumber-maven-plugin должен создать свойство ${timestamp}, которое содержит значение метки времени. Кажется, нет способа создать версия.свойства файл непосредственно с этим плагином.
<configuration>
<format>{0,date,yyyyMMddHHmmss}</format>
<items>
<item>timestamp</item>
</items>
</configuration>
Если вы используете версию Maven >= 2.1.0-M1, то вы можете использовать ${maven.строить.timestamp} свойство.
подробнее: http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Available_Variables
Если вам нужно время в часовом поясе, отличном от UTC (по умолчанию при использовании ${maven.build.timestamp}
) можно использовать build-helper-maven-plugin
. Более подробно см. краткие примеры использования целей плагина Build Helper Maven.
В любом случае, вот как я получил отметка времени в GMT-5 и поместите его в окончательное имя моего артефакта:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>timestamp-property</id>
<goals>
<goal>timestamp-property</goal>
</goals>
<configuration>
<name>current.time</name>
<pattern>yyyyMMdd-HHmmss</pattern>
<timeZone>GMT-5</timeZone>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<finalName>${project.name}-${current.time}</finalName>
</configuration>
</plugin>
</plugins>
</build>
этот пост (особенно нижеприведенная часть) также очень полезен и практичен для этого вопроса.
штамповка номера версии и время сборки в файле свойств с Maven
пом будет выглядеть так
...
<properties>
....
<!-- Timestamp of build -->
<timestamp>${maven.build.timestamp}</timestamp>
<maven.build.timestamp.format>yyyy_MM_dd_HH_mm</maven.build.timestamp.format>
</properties>
...
<build>
<finalName>${project.artifactId}_${project.version}_${timestamp}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
....
</plugin>
</plugins>
</build>
....
и имя пакета MyProject_1.0_2015_03_02_13_46.war
при развертывании проекта моментального снимка по умолчанию используется метка времени, если вы не переопределите ее в развертывать плагин. Если вы не получаете уникальные временные метки, это, вероятно, до конфигурации вашего репозитория Maven. Как говорится в другом ответе, используйте плагин timestamp или buildnumber для выпусков.
нам нужен более новый ответ :) Это построить сейчас: http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Available_Variables
использовать ${maven.build.timestamp}