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

新手上路,请多包涵

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

  1. 我们需要生成一个带时间戳的工件,所以 阶段(或任何地方)的一部分,而不是构建
   project-1.0-SNAPSHOT.jar

我们应该建造

   project-1.0-20090803125803.jar

(其中 `20090803125803` 只是一个 `YYYYMMDDHHMMSS` 构建 jar 时的时间戳)。

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

  1. 相同的时间戳必须包含在生成的 jar 中的 version.properties 文件中。

当您运行时,此信息包含在生成的 pom.properties 中,例如 mvn package 但被注释掉了:

 #Generated by Maven
#Mon Aug 03 12:57:17 PDT 2009

关于从哪里开始的任何想法都会有所帮助!谢谢!

原文由 Ryan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 637
2 个回答

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>

三个 网站 也值得一试。

原文由 Juha Syrjälä 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您使用 Maven >= 2.1.0-M1 的版本,那么您可以使用 ${maven.build.timestamp} 属性。

有关详细信息,请参阅: http ://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Available_Variables

原文由 Horia Chiorean 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题