某些情况下(这种情况一般很少见),使用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

其参数介绍如下:

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 isscmBranch.
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 istimestamp.
useLastCommittedRevision boolean 1.0-beta-2

whether to retrieve the revision for the last commit, or the last revision of

the repository.

Default value isfalse.

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"参数的使用,例子如下:

<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>

Maven插件之buildnumber-maven-plugin相关推荐

  1. maven插件打包exec_Exec Maven插件–从Maven Build运行Java程序

    maven插件打包exec Maven exec plugin allows us to execute system and Java programs from the maven command ...

  2. Spring Boot的Maven插件Spring Boot Maven plugin详解

    pring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven ...

  3. java自定义maven插件_java – 自定义Maven插件托管和前缀解析

    我已经编写了自己的自定义Maven插件并将其上传到我的Archiva服务器.它与指定的全名一起工作正常: mvn com.mjolnirr:maven-plugin:manifest 但是当我想通过前 ...

  4. java自定义maven插件_自定义Maven插件

    第一.自定义Maven插件概述 Mojo:Maven plain Old Java Object.每一个 Mojo 就是 Maven 中的一个执行目标(executable goal),而插件则是对单 ...

  5. 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上

    一个用于构建和推送Docker镜像的Maven插件. 使用Maven插件构建Docker镜像,将Docker镜像push到DockerHub上,或者私有仓库,上一篇文章是手写Dockerfile,这篇 ...

  6. maven 插件之 AutoConfig 工具使用笔记

    AutoConfig 是一款 maven 插件,主要用于 Maven 项目打包使用.在我们的工作中,会将自己写的代码打成 jar 包或者 war 包发布到各种环境上.一般地,不用的环境所使用的数据库. ...

  7. 一些好用的maven插件介绍

    Maven插件是扩展Maven功能的方式之一,它可以帮助我们更轻松地管理依赖性.构建应用程序.运行测试和部署应用程序等.maven插件实在是太多了,我这里也介绍不完,仅仅以我使用过的也比较实用的给大家 ...

  8. Maven 插件(plugin)

    一.maven-resources-plugin 为了使项目结构更为清晰,Maven区别对待Java代码文件和资源文件,maven-compiler-plugin用来编译Java代码,maven-re ...

  9. Maven(插件配置和生命周期的绑定)

    1.这篇文章很好,介绍的maven插件的. 2.maven的source插件为例,可以把源代码打成包. Goals Overview就可以查看该插件下面所有的目标. 这里我们要使用的是source:j ...

  10. Maven入门指南⑦:Maven的生命周期和插件

    Maven入门指南⑦:Maven的生命周期和插件 一个完整的项目构建过程通常包括清理.编译.测试.打包.集成测试.验证.部署等步骤,Maven从中抽取了一套完善的.易扩展的生命周期.Maven的生命周 ...

最新文章

  1. Cortana 的谢幕,不一定是产品问题
  2. Android给自定义按键添加广播和通过广播给当前焦点输入框赋值
  3. Pycharm显示行号,修改字号大小
  4. Logistic回归模型原理
  5. 安装sql server 2008 management studio时,提示升级VS2008 到 SP1
  6. init 0 init1 init 3 init 5 init 6 这几个启动级别都代表什么意思
  7. python中类的定义方法_Python类的定义、方法和属性使用
  8. 如何使用ReiBoot修复iOS系统
  9. android中ScrollView和GridView/ListView共存时,ScrollView不在顶部的解决方法
  10. IBM Rational DOORS通过DXL进行二次开发
  11. R数据分析:列线图的做法及解释
  12. WIN10彻底禁用UAC(用户账户控制)
  13. 服务器被攻击怎么处理
  14. Android和iOS人才招聘出现拐点 低能人才泛滥
  15. Flixel Dame 坦克大战(二)Dame-editor使用指南
  16. input onfocus onblur
  17. 康复期需注意什么?一组手账告诉你
  18. 博客中的动态图片如何制作
  19. 业务中台和数据中台的区别
  20. newcoder 筱玛的迷阵探险(搜索 + 01字典树)题解

热门文章

  1. ImportError: cannot import name 'AliPay'
  2. django设置paypal支付如何获取signature
  3. linux下面jmeter对百度进行压力测试
  4. python字符串包含关系_Python实现判断一个字符串是否包含子串的方法总结
  5. springboot:记录jdbc
  6. intellij从git上拉取maven项目详细步骤
  7. CentOs 中显示乱码问题
  8. 装修仿720VR全景平台网站源码
  9. 凉茶里偷掺消炎药 广东两名凉茶铺经营者领刑
  10. Rancher 2.0正式发布:简化、加速企业Kubernetes落地