某些情況下(這種情況一般很少見),使用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版本新增;具體參數就不多說了,可以直接看上面的鏈接。
下面是應用這個插件生成的序列號的例子:
<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
2020-01-08 15:22:55
下面是項目中maven該插件使用例子:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifact>buildnumber-maven-plugin</artifact>
<version>1.4</version>
<configuration>
<timestampFormat>yyyyMMddHHmm</timestampFormat>
</configuration>
<executors>
<execution>
<goals>
<goal>create-timestamp</goal>
</goals>
</execution>
</executors>
<inherited>false</inherited>
</plugin>