一、需求
在执行 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} 有问题,不用管,正常打包即可。