Maven插件之buildnumber-maven-plugin

转自 http://blog.csdn.net/wangjunjun2008/article/details/10394475

某些情况下(这种情况一般很少见),使用maven构建项目时,需要一个不重复的序列号,比如说,打包时,包名称以当前构建时间结尾,或者每次生成的jar包中包含唯一的序列号,等等;

这个时候,就用到了buildnumber插件,官方网址:

http://mojo.codehaus.org/buildnumber-maven-plugin/index.html

该插件能按照指定的方案生成序列号;首先引入该插件

 

[html] view plaincopy
 
  1. <!-- 根据系统时间生成唯一序列号 -->  
  2. <plugin>  
  3.     <groupId>org.codehaus.mojo</groupId>  
  4.     <artifactId>buildnumber-maven-plugin</artifactId>  
  5.     <version>1.2</version>  
  6. </plugin>  

常用以下两个目标:

 

buildnumber:create(基于SCM版本生成)

buildnumber:create-timestamp(基于系统时间生成)
两个目标都默认绑定在initialize生命周期;其中create-timestamp目标是1.0-beta-5版本新增;

以下分别介绍:

buildnumber:create

其参数介绍如下:

 

Name Type Since Description
buildNumberPropertiesFileLocation File 1.0-beta-2 当使用"format"参数,并且"item"参数包含"buildNumber"值时,会创建属性文件;此属性定义文件生成位置;
默认值: ${basedir}/buildNumber.properties
buildNumberPropertyName String 1.0-beta-1 自定义"buildNumber"属性名;默认值:buildNumber
doCheck boolean 1.0-beta-1 若设置为true,会检查文件是否修改,若有修改,则构建失败;
 Note that this used to be inverted (skipCheck), but needed to be
changed to allow releases to work. This corresponds to 'svn status'.
默认值: false.
doUpdate boolean 1.0-beta-1 若设置为true,版本号会更新为最新;否则会保持为本地值;
Note that this used to be inverted (skipUpdate),
but needed to be changed to allow releases to work.
This corresponds to 'svn update'.
默认值: false.
format String 1.0-beta-1 使用java.text.MessageFormat类格式化信息;和"items"参数一起使用;设置该参数会读取"items"参数
getRevisionOnlyOnce boolean 1.0-beta-3 若设置为true,在多模块的项目中,只会从SCM获取一次版本号;Default value is: false.
items List 1.0-beta-1 和"format"参数一起使用;填充"format"参数的占位符;
有效值为:"scmVersion", "timestamp", "buildNumber[digits]";
其中[digits]可选,用于选取指定的序列号;
locale String 1.0-beta-2 该属性使用本地Locale信息格式化date和time.该属性值由Locale.toString()方法得到;
默认值:由Locale.getDefault().toString()方法得到;
password String 1.0-beta-1 连接SCM系统时的密码;
providerImplementations Map 1.0-beta-3 SCM具体实现的替代方案;其值表示了SCM URL地址,比如"cvs","svn";
revisionOnScmFailure String 1.0-beta-2 当执行SCM某些操作失败时,可使用此参数值作为替代方案;
scmBranchPropertyName String 1.0-beta-4 自定义"buildScmBranch"属性名称;Default value is: scmBranch.
scmDirectory File 1.0-beta- Local directory to be used to issue SCM actions;Default value is: ${basedir}.
shortRevisionLength int 1.1 版本号长度(仅用于git)
timestampFormat String 1.0-beta-2 Apply this java.text.MessageFormat to the timestamp only (as opposed to the format parameter).
timestampPropertyName String 1.0-beta-1 自定义"timestamp"属性名;Default value is: timestamp.
useLastCommittedRevision boolean 1.0-beta-2 whether to retrieve the revision for the last commit, or the last revision of the repository.
Default value is: false.
username String 1.0-beta-1 连接SCM的用户名

 

 

buildnumber:create-timestamp

其有两个可选参数

 

Name Type Since Description
timestampFormat String 1.0-beta-5 使用ava.text.SimpleDateFormat类格式化序列号;默认格式不友好,推荐自定义该参数;
timestampPropertyName String 1.0-beta-5 自定义属性名;默认属性名称是: timestamp.

个人认为,使用create-timestamp目标就足够了。

 

有关"format"和"items"参数的使用,例子如下:

 

[html] view plaincopy
 
  1. <plugin>  
  2.     <groupId>org.codehaus.mojo</groupId>  
  3.     <artifactId>buildnumber-maven-plugin</artifactId>  
  4.     <version>1.2</version>  
  5.     <configuration>  
  6.         <format>At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.</format>  
  7.         <items>  
  8.             <item implementation="java.lang.Integer">7</item>  
  9.             <item>timestamp</item>  
  10.             <item>a disturbance in the Force</item>  
  11.         </items>  
  12.     </configuration>  
  13.     <executions>  
  14.         <execution>  
  15.             <phase>validate</phase>  
  16.             <goals>  
  17.                 <goal>create</goal>  
  18.             </goals>  
  19.         </execution>  
  20.     </executions>  
  21. </plugin>  

其他常用配置有

 

 

[html] view plaincopy
 
  1. <configuration>  
  2.     <format>{0,number}.{1,number}.{2,number}</format>  
  3.     <items>  
  4.         <item>buildNumber0</item>  
  5.         <item>buildNumber1</item>  
  6.         <item>buildNumber2</item>  
  7.     </items>  
  8. </configuration>  

 


[html] view plaincopy
 
  1. <configuration>  
  2.     <format>{0,date,yyyy-MM-dd HH:mm:ss}</format>  
  3.     <items>  
  4.         <item>timestamp</item>  
  5.     </items>  
  6. </configuration>  


产生的 ${buildNumber}值分别如下:

At12:30 PM on Jul3,2053, there was a disturbance in the Force on planet 7.
2.0.3
2005-10-062:22:55

其他详细信息,请参考官网

http://mojo.codehaus.org/buildnumber-maven-plugin/usage.html


PS:一个有用的实践,自定义属性,将生成的序列号赋值其中,便于其他插件等地方使用;

 

[html] view plaincopy
 
    1. <properties>  
    2.     <buildtimestamp>${timestamp}</buildtimestamp>  
    3. </properties>  

 

补充:

 1 <build>
 2 <finalName>jboss-eap-6.1-${buildNumber}</finalName>
 3 <plugins>
 4     <plugin>
 5         <artifactId>maven-assembly-plugin</artifactId>
 6         <version>2.4</version>
 7         <configuration>
 8         <descriptors>
 9         <descriptor>
10         dist.xml
11         </descriptor>
12         </descriptors>
13         </configuration>
14         <executions>
15         <execution>
16         <phase>package</phase>
17         <goals>
18         <goal>attached</goal>
19         </goals>
20         </execution>
21         </executions>
22     </plugin>
23     <plugin>
24         <artifactId>maven-release-plugin</artifactId>
25         <version>2.2.1</version>
26     </plugin>
27     <plugin> 
28         <groupId>org.codehaus.mojo</groupId> 
29         <artifactId>buildnumber-maven-plugin</artifactId> 
30         <version>1.2</version> 
31         <configuration>
32             <doUpdate>true</doUpdate>
33             <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
34             <useLastCommittedRevision>true</useLastCommittedRevision>
35             <username>xxxxx</username>
36             <password>xxxxx</password>
37         </configuration>
38     <executions> 
39         <execution> 
40             <phase>generate-sources</phase> 
41             <goals> 
42                 <goal>create</goal> 
43             </goals> 
44         </execution> 
45     </executions> 
46     </plugin>
47 </plugins>
48 
49 </build>
50 <scm>
51 <connection>scm:svn:https:xxxxxx</connection>
52 <url>https://xxxxxxxx</url>
53 </scm>

 

 

posted @ 2014-04-02 18:52  princessd8251  阅读(1731)  评论(0)    收藏  举报