Как добавить информацию о временном штампе в артефакты Maven?
Я обновляю большую систему сборки, чтобы использовать Maven2 вместо Ant, и у нас есть два связанных требования, за которые я застрял:
-
Нам нужно создать артефакт с отметкой времени, поэтому часть пакета
(или где бы то ни было), вместо построения
project-1.0-SNAPSHOT.jar
мы
следует строить
project-1.0-20090803125803.jar
(где
20090803125803
- это только a YYYYMMDDHHMMSS
метка времени, когда банка
встроенный).
Единственное реальное требование заключается в том, что отметка времени является частью
сгенерированное имя файла файла.
-
Тот же штамп времени должен быть включен в файл version.properties
внутри сгенерированной банки.
Эта информация включена в сгенерированные свойства pom.properties при запуске,
например, mvn package
, но прокомментирован:
#Generated by Maven
#Mon Aug 03 12:57:17 PDT 2009
Любые идеи о том, с чего начать, были бы полезны! Спасибо!
Ответы
Ответ 1
Варианты Maven 2.1.0-M1 или новее встроены в специальную переменную maven.build.timestamp
.
<build>
<finalName>${project.artifactId}-${project.version}-${maven.build.timestamp}</finalName>
</build>
Подробнее см. Maven .
Для более старых версий Maven посмотрите maven-timestamp-plugin или buildnumber-maven-plugin.
Если вы используете maven-timestamp-plugin, вы можете использовать что-то вроде этого, чтобы манипулировать полученным именем артефакта.
<build>
<finalName>${project.artifactId}-${project.version}-${timestamp}</finalName>
</build>
И эта конфигурация для buildnumber-maven-plugin должна создать свойство ${timestamp}, которое содержит значение timestamp. Кажется, что не существует способа создать файл version.properties непосредственно с этим плагином.
<configuration>
<format>{0,date,yyyyMMddHHmmss}</format>
<items>
<item>timestamp</item>
</items>
</configuration>
Эти
три сайты также заслуживают проверки.
Ответ 2
Если вы используете версию Maven >= 2.1.0-M1, вы можете использовать свойство ${maven.build.timestamp}.
Для получения дополнительной информации см.:
http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Available_Variables
Ответ 3
Если вам нужно время в часовом поясе, отличном от UTC (по умолчанию, когда вы используете ${maven.build.timestamp}
), вы можете использовать build-helper-maven-plugin
. Подробнее в Краткие примеры того, как использовать плагины сборки сборки 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>
Ответ 4
Этот пост (особенно ниже) также очень полезен и практичен для этой проблемы.
Штамповка номера версии и времени сборки в файле свойств с 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
Ответ 5
Когда развертывается проект SNAPSHOT, по умолчанию используется временная метка, если вы не переопределите ее в развернуть плагин. Если вы не получаете уникальные временные метки, возможно, это зависит от конфигурации вашего репозитория Maven. Как говорит другой ответ, используйте плагин timestamp или buildnumber для релизов.
Ответ 6
Нам нужен новый ответ:)
Теперь он встроен: http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Available_Variables
использовать ${maven.build.timestamp}