如何在Maven中生成EST时区的yyyyMMdd-HHmm格式时间戳?
生成EST时区、格式为yyyyMMdd-HHmm的Maven时间戳
你的核心问题是Maven版本不支持maven.build.timestamp.timezone属性——MNG-5452确实实现了时区支持,但这个功能是在Maven 3.9.0及以上版本才发布的,而你当前使用的是3.8.4,所以properties里的时区配置完全不生效。
另外你当前的配置还存在冲突:你在properties里定义了<timestamp>${maven.build.timestamp}</timestamp>,这会直接覆盖build-helper-maven-plugin生成的同名属性,导致插件的时区配置白搭。
正确配置方案(无需升级Maven、无需修改MVN_OPTIONS)
移除properties里的timestamp、maven.build.timestamp.format、maven.build.timestamp.timezone配置,然后修改build-helper-maven-plugin的配置,确保生成你需要的格式和时区:
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>3.3.0</version> <executions> <execution> <id>timestamp-property</id> <!-- 确保在你需要使用timestamp属性的阶段之前执行,比如initialize --> <phase>initialize</phase> <goals> <goal>timestamp-property</goal> </goals> <configuration> <name>timestamp</name> <!-- 改成你需要的格式 --> <pattern>yyyyMMdd-HHmm</pattern> <locale>en_US</locale> <!-- 用完整时区ID更可靠,EST可能有歧义 --> <timeZone>America/New_York</timeZone> </configuration> </execution> </executions> </plugin> </plugins> </build>
验证方法
运行以下命令直接查看生成的时间戳:
mvn help:evaluate -Dexpression=timestamp -q -DforceStdout
补充说明
- 尽量使用
America/New_York而非EST,因为EST是固定时区(不考虑夏令时),而America/New_York会自动切换夏令时(EDT/EST),更符合实际需求。 - 如果你的项目需要在更早的构建阶段使用这个timestamp属性,确保插件的
<phase>设置为对应的阶段(比如validate)。
内容的提问来源于stack exchange,提问作者Molay
相关产品推荐
相关产品推荐

