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版本新增;
以下分别介绍:
其参数介绍如下:
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的用户名 |
其有两个可选参数
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}
值分别如下:
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:一个有用的实践,自定义属性,将生成的序列号赋值其中,便于其他插件等地方使用;
<properties>
<buildtimestamp>${timestamp}</buildtimestamp>
</properties>
Maven插件之buildnumber-maven-plugin的更多相关文章
- Spring Boot的Maven插件Spring Boot Maven plugin详解
Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Mave ...
- maven课程 项目管理利器-maven 3-4 eclipse安装maven插件和新建maven项目
本节主要讲了两个主要内容, 1 eclipse安装maven插件 2 新建maven项目 3 本人实操 1 eclipse安装maven插件 eclipse4.0以上和myec ...
- Gradle 1.12用户指南翻译——第五十二章. Maven 插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上 ...
- maven 插件之 AutoConfig 工具使用笔记
AutoConfig 是一款 maven 插件,主要用于 Maven 项目打包使用.在我们的工作中,会将自己写的代码打成 jar 包或者 war 包发布到各种环境上.一般地,不用的环境所使用的数据库. ...
- MacOS如何正确配置Idea自带Maven插件的环境变量?(亲测)
背景 安装了IDEA开发工具,想执行Maven的命令.但是又没有通过自己下载Maven的安装包进行安装,只是想直接使用IDEA自带的Maven插件来执行Maven的各种命令.由于刚开始使用macos对 ...
- maven 学习---部署基于Maven的war文件到Tomcat
在本教程中,我们将学习如何使用Maven的Tomcat插件打包并部署一个WAR文件到Tomcat(Tomcat的6和7. 要用到工具: Maven 3 Tomcat 6.0.37 Tomcat 7.0 ...
- 基于idea的maven(一)Maven的安装
1.Maven前置依赖 检查电脑是是否安装java 2.下载maven 网址 www.apache.org 解压 maven 压缩包, 并创建相应的maven本地仓库的路径. 打开 conf文件夹中 ...
- (十三)Maven插件解析运行机制
这里给大家详细说一下Maven的运行机制,让大家不仅知其然,更知其所以然. 1.插件保存在哪里? 与我们所依赖的构件一样,插件也是基于坐标保存在我们的Maven仓库当中的.在用到插件的时候会先从本地仓 ...
- java使用tomcat7的maven插件发布到服务器
服务器容器使用tomcat7的maven插件,使用该插件不需要使用tomcat服务器.以下示例均以paycore项目为例. 一.使用tomcat7-maven-plugin 首先在主pom(payco ...
- MyBatis Generator作为maven插件自动生成增删改查代码及配置文件例子
什么是MyBatis Generator MyBatis Generator (MBG) 是一个Mybatis的代码生成器,可以自动生成一些简单的CRUD(插入,查询,更新,删除)操作代码,model ...
随机推荐
- APK扩展文件介绍、功能及用法
APK扩展文件介绍 Android Market (Google Play Store)中每一个APK文件的最大限制是50MB.假设您的程序中包括大量的数据文件,曾经您仅仅能把这些数据文件放到自己的s ...
- 由于“Table(T_Test)”没有主键,因此无法在其上执行 Create、Update 或 Delete 操作
在使用Linq To Sql查询的时候,遇到这么个问题,如图所示: 出现这个问题的原因就像途中所说的——没有主键(现在终于初步知道“为什么别人常说数据库中的逻辑主键是为了在编程中方便使用”的原因了,估 ...
- [LeetCode] Print All Combinations of a Number as a Sum of Candidate Numbers
题目连接:http://leetcode.com/2010/09/print-all-combinations-of-number-as-sum.html 题目分析: 由于这里说明了输入是升序的,当然 ...
- DataGridView ——管理员对用户的那点操作
记得第一次做机房收费系统的时候,就在加入删除用户这出现了点小问题,由于一直都是一个容不得一点瑕疵的人.所以对查询用户的时候查询一次就会多一些空行我非常是不能容忍.看似非常小的问题,我却花了非常长的时间 ...
- unity3d游戏开发学习之使用3dmax创建导弹模型
在着手研究Unity3D的游戏开发时,3D模型能够考虑从unity的assets store去获取,也能够从网上搜索下载,同一时候咱们也能够尝试下自己动手去做一些简单的模型. 这里就依据unity3d ...
- Lucene.Net 2.3.1开发介绍 —— 二、分词(四)
原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(四) 2.1.2 可以使用的内置分词 简单的分词方式并不能满足需求.前文说过Lucene.Net内置分词中StandardAnalyze ...
- <摘录>详谈高性能UDP服务器的开发
上一篇文章我详细介绍了如何开发一款高性能的TCP服务器的网络传输层.本章我将谈谈如何开发一个高性能的UDP服务器的网络层.UDP服务器的网络层开 发相对与TCP服务器来说要容易和简单的多,UDP服务器 ...
- 友情转发一则Erlang招聘广告
新锐手游开发公司WalkYY,招聘Erlang游戏服务端开发工程师若干名,要求有半年以上Erlang游戏服务端开发经验,熟悉Erlang OTP和MySQL数据库.公司团队靠谱,发展空间大,有意者请发 ...
- 【问题解决】syntax error: unexpected end of file或-bash: ./full_build.sh: /bin/bash^M: bad interpreter: No
在阅读的过程中有不论什么问题,欢迎一起交流 邮箱:1494713801@qq.com QQ:1494713801 运行一个脚本full_build.sh 时, 一直是提示我: -bash: ./ ...
- 网络编程API-上 (基本API)
htons.ntohs.htonl和ntohl函数 Linux提供了4个函数来完毕主机字节序和网络字节序之间的转换 #include <netinet/in.h> uint16_t hto ...