“ 当前场景下,某些包需要上传到服务器进行执行。使用的是Maven进行管理的方式,但是多次修改后也不能修改包版本。所以希望通过jar包的时间戳来确定当前的版本。直接在包名上添加时间戳,如:springboot-0.0.1-SNAPSHOT-20190919.jar,能够简单方便的进行查找与管理。”
使用Maven自带的时间戳
在maven2.1.0-M1之后maven内置了一个特殊变量maven.build.timestamp,所以我们可以基于该变量进行直接打包。
<properties>
<maven.build.timestamp.format>yyyy_MM_dd_HH</maven.build.timestamp.format>
</properties>
<build>
<finalName>${project.artifactId}_${project.version}_${maven.build.timestamp}</finalName>
...
</build>
该方式使用的是maven自带的时间戳 ${maven.build.timestamp},但是该时间是UTC时区。如果需要自定义时区,可以选择使用插件来实现。
使用build-helper-maven-plugin
build-helper-maven-plugin允许用户使用不同的地区设置自定义的时间戳格式。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>timestamp-property</id>
<goals>
<goal>timestamp-property</goal>
</goals>
<configuration>
<name>build.time</name>
<pattern>MM/dd/yyyy hh:mm aa</pattern>
<locale>en_US</locale>
<timeZone>America/Detroit</timeZone>
</configuration>
</execution>
</executions>
</plugin>
<build>
<finalName>${project.artifactId}_${project.version}_${package.time}</finalName>
</build>
把maven.build.timestamp修改成了自定义的package.time,进行打包测试,时间戳与当前时间一致
把时间戳添加到包名上通过包名直接能够查看到打包的时间,方便包的查找,管理。