我正在升级一个大型构建系统以使用Maven2而不是Ant,我们有两个相关的要求,我坚持:
project-1.0-SNAPSHOT.jar
我们应该建设
project-1.0-20090803125803.jar
(其中20090803125803
只是罐子制造时的YYYYMMDDHHMMSS
时间戳)。
唯一真正的要求是时间戳是生成文件的文件名的一部分。当您运行时,此信息包含在生成的pom.properties中,例如,mvn package
但已被注释掉:
#Generated by Maven
#Mon Aug 03 12:57:17 PDT 2009
任何关于从哪里开始的想法都会有所帮助!谢谢!
Maven版本2.1.0-M1或更新版本内置了特殊变量maven.build.timestamp
。
<build>
<finalName>${project.artifactId}-${project.version}-${maven.build.timestamp}</finalName>
</build>
有关详细信息,请参阅Maven documentation。
对于较旧的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>
qazxsw poi qazxsw poi qazxsw poi也值得一试。
如果您使用的是Maven> = 2.1.0-M1的版本,那么您可以使用$ {maven.build.timestamp}属性。
有关更多信息,请参阅:These
如果您需要UTC以外的时区(使用 three 时的默认值),您可以使用sites。在http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Available_Variables中查看更多信息。
无论如何,这就是我在GMT-5中获得时间戳并将其放在我的工件的最终名称中的方式:
${maven.build.timestamp}
这篇文章(特别是下面的部分)对于这个问题也非常有用和实用。
build-helper-maven-plugin
pom看起来像这样
Brief examples on how to use the Build Helper Maven Plugin's goals
包名是 <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>
部署SNAPSHOT项目时,默认使用时间戳,除非您在Stamping Version Number and Build Time in a Properties File with Maven中覆盖它。如果您没有获得唯一的时间戳,则可能是Maven存储库的配置。正如另一个答案所说,使用timestamp或buildnumber插件进行发布。
我们需要一个更新的答案:)它现在正在构建:...
<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. 0-2015_03_02_13_46.war