Je mets à niveau un grand système de build pour utiliser Maven2 au lieu de Ant, et nous avons deux exigences liées sur lesquelles je suis bloqué:
Nous devons générer un artefact horodaté, donc une partie de la phase package (ou n'importe où), au lieu de construire
project-1.0-SNAPSHOT.jar
nous devrions construire
project-1.0-20090803125803.jar
(où le 20090803125803
n'est qu'un YYYYMMDDHHMMSS
horodatage de la date de construction du pot).
La seule vraie exigence est que l'horodatage fasse partie du nom de fichier du fichier généré.
Le même horodatage doit être inclus dans un fichier version.properties à l'intérieur du pot généré.
Ces informations sont incluses dans le pom.properties généré lorsque vous exécutez, par exemple, mvn package
mais est commenté:
#Generated by Maven
#Mon Aug 03 12:57:17 PDT 2009
Toutes les idées par où commencer seraient utiles! Merci!
Les versions Maven 2.1.0-M1 ou plus récentes ont intégré une variable spéciale maven.build.timestamp
.
<build>
<finalName>${project.artifactId}-${project.version}-${maven.build.timestamp}</finalName>
</build>
Voir Maven documentation pour plus de détails.
Pour les anciennes versions de Maven, regardez maven-timestamp-plugin ou buildnumber-maven-plugin .
Si vous utilisez le plugin maven-timestamp, vous pouvez utiliser quelque chose comme ceci pour manipuler le nom de l'artefact résultant.
<build>
<finalName>${project.artifactId}-${project.version}-${timestamp}</finalName>
</build>
Et cette configuration pour buildnumber-maven-plugin devrait créer une propriété $ {timestamp} qui contient la valeur d'horodatage. Il ne semble pas y avoir de moyen de créer le fichier version.properties directement avec ce plugin.
<configuration>
<format>{0,date,yyyyMMddHHmmss}</format>
<items>
<item>timestamp</item>
</items>
</configuration>
Si vous utilisez une version de Maven> = 2.1.0-M1, vous pouvez utiliser la propriété $ {maven.build.timestamp}.
Pour plus d'informations, voir: http://maven.Apache.org/guides/introduction/introduction-to-the-pom.html#Available_Variables
Si vous avez besoin de l'heure dans un fuseau horaire autre que UTC (la valeur par défaut lorsque vous utilisez ${maven.build.timestamp}
) vous pouvez utiliser le build-helper-maven-plugin
. Voir plus dans Brefs exemples sur la façon d'utiliser les objectifs du plugin Build Helper Maven .
Quoi qu'il en soit, voici comment j'ai le horodatage en GMT-5 et le mettre dans le nom final de mon artefact:
<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>
Ce message (en particulier la partie ci-dessous) est également très utile et pratique pour ce numéro.
Estampage du numéro de version et du temps de construction dans un fichier de propriétés avec Maven
Le pom ressemblera à ceci
...
<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>
....
et le nom du package est MyProject-1.0. 0-2015_03_02_13_46.war
Lorsqu'un projet SNAPSHOT est déployé, par défaut, un horodatage est utilisé, sauf si vous le remplacez dans deploy plugin . Si vous n'obtenez pas d'horodatages uniques, il s'agit probablement d'une configuration de votre référentiel Maven. Comme le dit l'autre réponse, utilisez le plugin timestamp ou buildnumber pour les versions.
Nous avons besoin d'une réponse plus récente :) Elle est intégrée maintenant: http://maven.Apache.org/guides/introduction/introduction-to-the-pom.html#Available_Variables
utilisation ${maven.build.timestamp}