Maven生成WAR包时自动更新版本号version
Maven插件之buildnumber-maven-plugin
某些情况下(这种情况一般很少见),使用maven构建项目时,需要一个不重复的序列号,比如说,打包时,包名称以当前构建时间结尾,或者每次生成的jar包中包含唯一的序列号,等等;
这个时候,就用到了buildnumber插件,官方网址:
http://mojo.codehaus.org/buildnumber-maven-plugin/index.html
该插件能按照指定的方案生成序列号;首先引入该插件
<!-- 根据系统时间生成唯一序列号 --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>buildnumber-maven-plugin</artifactId> <version>1.2</version> </plugin>
常用以下两个目标:
buildnumber:create(基于SCM版本生成)
buildnumber:create-timestamp(基于系统时间生成) 两个目标都默认绑定在initialize生命周期;其中create-timestamp目标是1.0-beta-5版本新增;
以下分别介绍:
buildnumber:create
其参数介绍如下:
个人认为,使用create-timestamp目标就足够了。
有关"format"和"items"参数的使用,例子如下:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>buildnumber-maven-plugin</artifactId> <version>1.2</version> <configuration> <format>At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.</format> <items> <item implementation="java.lang.Integer">7</item> <item>timestamp</item> <item>a disturbance in the Force</item> </items> </configuration> <executions> <execution> <phase>validate</phase> <goals> <goal>create</goal> </goals> </execution> </executions> </plugin>
其他常用配置有
<configuration> <format>{0,number}.{1,number}.{2,number}</format> <items> <item>buildNumber0</item> <item>buildNumber1</item> <item>buildNumber2</item> </items> </configuration>
<configuration> <format>{0,date,yyyy-MM-dd HH:mm:ss}</format> <items> <item>timestamp</item> </items> </configuration>
产生的 ${buildNumber}值分别如下:
At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.
2.0.3
2005-10-06 2:22:55
其他详细信息,请参考官网
http://mojo.codehaus.org/buildnumber-maven-plugin/usage.html
PS:一个有用的实践,自定义属性,将生成的序列号赋值其中,便于其他插件等地方使用;
<properties> <buildtimestamp>${timestamp}</buildtimestamp> </properties>
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>buildnumber-maven-plugin</artifactId> <version>1.2</version> <executions> <execution> <phase>validate</phase> <goals> <goal>create</goal> </goals> </execution> </executions> <configuration> <doCheck>false</doCheck> <doUpdate>false</doUpdate> <buildNumberPropertiesFileLocation>${project.build.directory}</buildNumberPropertiesFileLocation> <buildNumberPropertyName>verNum</buildNumberPropertyName> <timestampFormat>{0,date,yyyyMMddHHmmss}</timestampFormat> <items> <item>timestamp</item> </items> </configuration> </plugin> <build> <finalName>${project.artifactId}-${project.version}.v${verNum}-${timestamp}</finalName> ... <build>
上一篇:
IDEA上Java项目控制台中文乱码