如何向 Maven 工件添加时间戳信息?

2022-08-31 20:43:28

我正在升级一个大型构建系统以使用Maven2而不是Ant,我们有两个相关的要求,我坚持了:

  1. 我们需要生成一个带时间戳的工件,因此是包阶段(或任何地方)的一部分,而不是构建

    project-1.0-SNAPSHOT.jar
    

    我们应该建设

    project-1.0-20090803125803.jar
    

    (其中,它只是构建jar的时间戳)。20090803125803YYYYMMDDHHMMSS

    唯一真正的要求是时间戳是生成文件文件名的一部分。

  2. 相同的时间戳必须包含在生成的 jar 内的 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-pluginbuildnumber-maven-plugin

如果您使用maven-timestamp-plugin,则可以使用类似这样的东西来操作生成的工件名称。

<build>
   <finalName>${project.artifactId}-${project.version}-${timestamp}</finalName>
</build>

buildnumber-maven-plugin的这种配置应该创建一个包含时间戳值的${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


推荐