Maven=>打包部署时java/war包名增加时间戳
程序员文章站
2022-05-02 15:06:31
...
maven打包加时间戳
基于Maven的项目,发布时需要打包,如web项目打成war格式包。每次打包时希望自己加上时间戳,假如我的项目名是myproject,默认打包后名为ROOT-2.1.1.war。而我希望的名字为ROOT-2.1.1-{yyyyMMddHHmmss},方便以后对包进行查找与管理,如何实现这种效果呢?
- 使用maven自带的属性
设置时间戳格式:在pom.xml文件中加入以下配置
<properties>
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
</properties>
在<build>...</build>
中引用该属性
<build>
<!--打jar则在finalName里面-->
<finalName>${project.artifactId}-${project.version}-${maven.build.timestamp}</finalName>
<!--打war则在 maven-war-plugin 里面的 warName 里面-->
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<!--最终打包名-->
<warName>${project.artifactId}-${project.version}-${maven.build.timestamp</warName>
<warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
Maven自带时间戳使用${maven.build.timestamp}
,但是时区是UTC
(比北京时间晚8个小时)。 如果要使用GMT+8
,就需要插件提供支持,以下两个插件可以实现。
- 在
<plugins></plugins>
使用buildnubmer-maven-plugin
<build>
<!--打jar则在finalName里面-->
<finalName>
${project.artifactId}-${project.version}-${timestamp}
</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.4</version>
<configuration>
<timestampFormat>yyyyMMddHHmmss</timestampFormat>
</configuration>
<executions>
<execution>
<goals>
<goal>create-timestamp</goal>
</goals>
</execution>
</executions>
<inherited>false</inherited>
</plugin>
<!--打war则在 maven-war-plugin 里面的 warName 里面-->
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<!--最终打包名-->
<warName>${project.artifactId}-${project.version}-${maven.build.timestamp</warName>
<warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
默认属性是timestamp
,在打包plugin中引用该属性
jar包
war包
- 在
<plugins></plugins>
使用build-helper-maven-plugin
<build>
<finalName>ProjectName-${current.time}</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>timestamp-property</id>
<goals>
<goal>timestamp-property</goal>
</goals>
</execution>
</executions>
<configuration>
<name>current.time</name>
<pattern>yyyyMMdd-HHmmss</pattern>
<timeZone>GMT+8</timeZone>
</configuration>
</plugin>
</plugins>
</build>