如何让Maven在maven.build.timestamp中显示本地时区?
在Maven 3.2.2+中, maven.build.timestamp
已被重新定义,以按照MNG-5452显示UTC时间。
有没有办法指定我想在我的本地时区而不是UTC中提供时区信息? 我简要地浏览了maven的来源,但是无论如何都没有看到我想要TZ是本地TZ而不是UTC。
如前所述,在当前版本的Maven中(至少版本为3.3。+), maven.build.timestamp
属性不允许进行时区覆盖。
但是,如果您可以使用不同的属性名称, build-helper-maven-plugin允许您为各种目的配置自定义时间戳。 以下是在构建期间配置EST中当前时间戳的示例。
org.codehaus.mojo build-helper-maven-plugin 1.10 timestamp-property timestamp-property build.time MM/dd/yyyy hh:mm aa en_US America/Detroit
然后,您可以使用${build.time}
属性而不是${maven.build.timestamp}
,其中您需要在首选时区中构建时间戳。
我认为没有纯Maven解决方案,但您可以使用Ant任务。
按照Maven插件开发人员cookbook中给出的说明,您可以使用
ant任务生成filter.properties
文件。 在此元素中,您可以使用与SimpleDateFormat类相同的日期/时间模式自定义时间戳,也可以使用Timezone类 。 然后,您可以使用${build.time}
,默认情况下它将使用您当地的时区。
1)使用maven-antrun-plugin
org.apache.maven.plugins maven-antrun-plugin generate-resources run
2)激活过滤
src/main/resources true ${basedir}/target/filter.properties
没有解决方案,但解决方法。 你碰巧使用maven buildnumber-maven-plugin插件吗? 如果是这样,您可以使用它为您生成修订版并构建时间戳。 此时间戳将基于您的本地Java时区配置。
编辑:然而问题是关于timestamp
,正如Dean Schulze指出的那样,只有第一次execution
会破坏${buildNumber}
。 要解决此问题,您必须在配置中添加另一个将创建buildRevision
。 更新后的示例,如下。 例如:`
org.codehaus.mojo buildnumber-maven-plugin 1.3 true generate-timestamp validate create {0,date,yyyy-MM-dd HH:mm:ss Z} - timestamp
buildDateTime true generate-buildnumber validate create 0 true buildRevision
你可以使用${buildDateTime}
来注入你的timestamp变量。 具有相同目标的另一个执行也将存储您的修订。