一、需求
在执行 mvn clean package -Dmaven.test.skip=true 后,生成的 jar 包带有自定义系统时间。
二、实现
方法一:使用自带属性(不推荐)
使用系统时间戳,但有一个问题,就是默认使用 UTC+0 的时区。举例:当前时北京时间,而使用该方法时,生成的时间是 0时区的时间,而不是 UTC+8 的北京时间。
pom.xml 配置如下
(1) 在 properties 中添加属性
<properties>
<maven.build.timestamp.format>yyyyMMdd_HHmmss</maven.build.timestamp.format>
</properties>
(2)在打包 plugin 中引用该属性
<build><finalName>${project.artifactId}_${project.version}_${maven.build.timestamp}</finalName>
</build>
方法二:使用插件实现(推荐)
在 <build></build> 模块中引入依赖,并配置即可。
<build><finalName>${project.artifactId}_${project.version}_${build.time}</finalName><!-- 时间插件 --><plugin><groupId>org.codehaus.mojo</groupId><artifactId>build-helper-maven-plugin</artifactId><version>3.5.0</version><executions><execution><id>timestamp-property</id><goals><goal>timestamp-property</goal></goals><configuration><name>build.time</name><pattern>yyyyMMdd_HHmmss</pattern><locale>zh_CN</locale><timeZone>GMT+8</timeZone></configuration></execution></executions></plugin></plugins></build>
如果 pom.xml 语法检测 ${build.time} 有问题,不用管,正常打包即可。