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

标签 java maven-2 ant upgrade

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

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

    project-1.0-SNAPSHOT.jar
    

    我们 应该正在 build 中

    project-1.0-20090803125803.jar
    

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

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

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

运行时生成的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-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>

These three sites也值得一试。

关于java - 如何将时间戳信息添加到 Maven 工件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1224359/

相关文章:

java - Java 中可用的各种 Datalog 实现有哪些?

java - JMockit:如何调用 MockUp 的自定义方法

maven-2 - 发布时替换pom中的-SNAPSHOT

java - Ant 到gradle迁移中生成的源代码

java - 在 eclipse 上通过 Ant 运行简单的 JUnit 测试时出现问题

java - 取消匿名TimerTask

java - 解析到对象 api 字段(如电子邮件、bNumber、iKindCd)会导致空值

java - 在 Maven 中使用 Java 高级镜像

java - 在 Maven 模块化项目中查找未使用的代码

java - 在 Eclipse 中构建 Ant 时出现 SocketTimeoutException