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
其参数介绍如下:
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"参数的使用,例子如下:
<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相关推荐
- maven插件打包exec_Exec Maven插件–从Maven Build运行Java程序
maven插件打包exec Maven exec plugin allows us to execute system and Java programs from the maven command ...
- Spring Boot的Maven插件Spring Boot Maven plugin详解
pring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven ...
- java自定义maven插件_java – 自定义Maven插件托管和前缀解析
我已经编写了自己的自定义Maven插件并将其上传到我的Archiva服务器.它与指定的全名一起工作正常: mvn com.mjolnirr:maven-plugin:manifest 但是当我想通过前 ...
- java自定义maven插件_自定义Maven插件
第一.自定义Maven插件概述 Mojo:Maven plain Old Java Object.每一个 Mojo 就是 Maven 中的一个执行目标(executable goal),而插件则是对单 ...
- 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
一个用于构建和推送Docker镜像的Maven插件. 使用Maven插件构建Docker镜像,将Docker镜像push到DockerHub上,或者私有仓库,上一篇文章是手写Dockerfile,这篇 ...
- maven 插件之 AutoConfig 工具使用笔记
AutoConfig 是一款 maven 插件,主要用于 Maven 项目打包使用.在我们的工作中,会将自己写的代码打成 jar 包或者 war 包发布到各种环境上.一般地,不用的环境所使用的数据库. ...
- 一些好用的maven插件介绍
Maven插件是扩展Maven功能的方式之一,它可以帮助我们更轻松地管理依赖性.构建应用程序.运行测试和部署应用程序等.maven插件实在是太多了,我这里也介绍不完,仅仅以我使用过的也比较实用的给大家 ...
- Maven 插件(plugin)
一.maven-resources-plugin 为了使项目结构更为清晰,Maven区别对待Java代码文件和资源文件,maven-compiler-plugin用来编译Java代码,maven-re ...
- Maven(插件配置和生命周期的绑定)
1.这篇文章很好,介绍的maven插件的. 2.maven的source插件为例,可以把源代码打成包. Goals Overview就可以查看该插件下面所有的目标. 这里我们要使用的是source:j ...
- Maven入门指南⑦:Maven的生命周期和插件
Maven入门指南⑦:Maven的生命周期和插件 一个完整的项目构建过程通常包括清理.编译.测试.打包.集成测试.验证.部署等步骤,Maven从中抽取了一套完善的.易扩展的生命周期.Maven的生命周 ...
最新文章
- Cortana 的谢幕,不一定是产品问题
- Android给自定义按键添加广播和通过广播给当前焦点输入框赋值
- Pycharm显示行号,修改字号大小
- Logistic回归模型原理
- 安装sql server 2008 management studio时,提示升级VS2008 到 SP1
- init 0 init1 init 3 init 5 init 6 这几个启动级别都代表什么意思
- python中类的定义方法_Python类的定义、方法和属性使用
- 如何使用ReiBoot修复iOS系统
- android中ScrollView和GridView/ListView共存时,ScrollView不在顶部的解决方法
- IBM Rational DOORS通过DXL进行二次开发
- R数据分析:列线图的做法及解释
- WIN10彻底禁用UAC(用户账户控制)
- 服务器被攻击怎么处理
- Android和iOS人才招聘出现拐点 低能人才泛滥
- Flixel Dame 坦克大战(二)Dame-editor使用指南
- input onfocus onblur
- 康复期需注意什么?一组手账告诉你
- 博客中的动态图片如何制作
- 业务中台和数据中台的区别
- newcoder 筱玛的迷阵探险(搜索 + 01字典树)题解