maven 版本号插件_Maven内部版本号插件–用法示例

maven 版本号插件

假设我们需要向一些工件(jar,war等)添加内部版本号。 在这里,我想演示buildnumber-maven-plugin的用法。

这篇文章基于:

  • http://mojo.codehaus.org/buildnumber-maven-plugin/usage.html
  • http://www.site.lalitbhatt.com/maven-build-number-plugin
  • http://blog.peterlynch.ca/2009/11/buildnumber-maven-plugin-helpful.html
  • http://apollo.ucalgary.ca/tlcprojectswiki/index.php/Public/Project_Versioning_-_Best_Practices#Build_Versioning

我们有一些项目,需要在jar清单文件中包含不基于VCS(SVN,Git,Mercurial等)修订版本的顺序内部版本号。 让我们创建适当的pom.xml文件,并实施小型演示以验证结果。

生成Maven项目

$ mvn archetype:generate -DgroupId=org.halyph -DartifactId=buildNoTest\
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false

创建pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelversion>4.0.0</modelversion><groupid>org.halyph</groupid><artifactid>buildNoTest</artifactid><packaging>jar</packaging><version>1.0-SNAPSHOT</version><name>buildNoTest</name><url>http://maven.apache.org</url><dependencies><dependency><groupid>junit</groupid><artifactid>junit</artifactid><version>3.8.1</version><scope>test</scope></dependency></dependencies><properties><project.build.sourceencoding>UTF-8</project.build.sourceencoding></properties><!-- If you have access to scm then you can place actual url's. Otherwise with <revisionOnScmFailure /> you can give some fake URLs as follows. --><scm><connection>scm:svn:http://none</connection><developerconnection>scm:svn:https://none</developerconnection><url>scm:svn:https://none</url></scm><build><resources><resource><directory>src/main/resources</directory></resource><resource><directory>src/main/filtered-resources</directory><filtering>true</filtering></resource></resources><plugins><plugin><groupid>org.codehaus.mojo</groupid><artifactid>buildnumber-maven-plugin</artifactid><version>1.1</version><executions><execution><phase>generate-resources</phase><goals><goal>create</goal></goals></execution></executions><configuration><!-- doCheck and doUpdate actually talk to repository if it's true,Check would check that there are no local changes. Update would update it --><docheck>false</docheck><doupdate>false</doupdate><!-- This ensures that even if we are not connected to scm than alsotake the version from local .svn file --><revisiononscmfailure><!--Generate sequence build number based on:build number and timestamp      --><format>Build: #{0} ({1,date})</format><items><item>buildNumber\d*</item><item>timestamp</item></items></revisiononscmfailure></configuration></plugin><plugin><groupid>org.apache.maven.plugins</groupid><artifactid>maven-jar-plugin</artifactid><version>2.1</version><configuration><archive><!-- will put the entries into META-INF/MANIFEST.MF file --><manifestentries><implementation-version>${project.version}</implementation-version><implementation-build>${buildNumber}</implementation-build></manifestentries></archive></configuration></plugin></plugins></build>
</project>

创建演示应用程序以验证结果

package org.halyph;import java.io.IOException;
import java.util.ResourceBundle;
import java.util.jar.Attributes;
import java.util.jar.Manifest;public class App
{public static void main( String[] args ) throws IOException{System.out.println('Verify Resource bundle' );// Check filtered resources based on generated build numberResourceBundle bundle = ResourceBundle.getBundle( 'build' );String msg = bundle.getString( 'build.message' );System.out.println(msg);System.out.println('\nVerify Generated MANIFEST.MF Properties' );// Check Manifest file based on generated build numberManifest mf = new Manifest();mf.read(Thread.currentThread().getContextClassLoader().getResourceAsStream('META-INF/MANIFEST.MF'));Attributes atts = mf.getMainAttributes();System.out.println('Implementation-Versio: ' + atts.getValue('Implementation-Version'));System.out.println('Implementation-Build: ' + atts.getValue('Implementation-Build'));}
}

多次构建应用程序并运行

$ mvn install
$ java -cp target\buildNoTest-1.0-SNAPSHOT.jar org.halyph.App
Verify Resource bundle
Build: #3 (Jun 27, 2012)Verify Generated MANIFEST.MF Properties
Implementation-Versio: 1.0-SNAPSHOT
Implementation-Build: Build: #3 (Jun 27, 2012)

摘要

  1. 我们应该通过将伪造的<scm>部分添加到pom.xml中并将<revisionOnScmFailure />添加到buildnumber-maven-plugin <configuration>中,通知buildnumber-maven-plugin我们将不使用版本控制修订作为内部版本号。
  2. 已实现的自定义内部版本号格式,请参阅buildnumber-maven-plugin <配置> / <格式>和<配置> / <项目>。
  3. 在jar清单中添加了内部版本号,请参阅maven-jar-plugin pom.xml部分
  4. 测试生成的内部版本号是否可以正确添加到过滤的资源中
  • 创建的src \ main \ filtered-resources \ build.properties文件
build.message=${buildNumber}
  • 添加了资源过滤,请参见<resource>标志<filtering> true </ filtering>部分
  • 演示应用程序验证jar清单文件中的过滤资源和内部版本号
  • 您可以git clone这个项目https://github.com/halyph/blog-sandbox/tree/master/Maven/blogpost_062712

    参考: Maven内部版本号插件–我们的JCG合作伙伴 Orest Ivasiv的示例用法,来自Knowledge Is Everything博客。


翻译自: https://www.javacodegeeks.com/2012/10/maven-build-number-plugin-sample-usage.html

maven 版本号插件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352836.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言程序设计课件第二章,c语言程序设计课件张元国 ISBN9787566300386 PPT第二章数据类型 运算符与表达式...

1、第2章 数据类型、运算符与表达式,语言的数据类型 常量与变量 运算符与表达式 不同类型数据间的转换,2.1语言的数据类型,数据是计算机程序处理的所有信息的总称&#xff0c;数值、字符、文本等都是数据&#xff0c;在各种程序设计中几乎都要使用和处理数据&#xff0c;程序设…

nowcoder172C 保护 (倍增lca+dfs序+主席树)

https://www.nowcoder.com/acm/contest/172/C &#xff08;sbw大佬太强啦 orz&#xff09; 先把每一个路径(x,y)分成(x,lca),(y,lca)两个路径&#xff0c;然后就能发现&#xff0c;对于某两个&#xff08;直上直下的&#xff09;路径a,b&#xff0c;b的下端点在a的下端点子树中…

添用户报错:useradd:警告:此主目录已经存在

转载自&#xff1a;http://blog.csdn.net/lele892207980/article/details/17239347 建立mysql用户、组 groupadd mysql useradd -g mysql mysql 然后删除 userdel mysql 再添用户和组加时&#xff0c;提示&#xff1a; useradd&#xff1a;警告&#xff1a;此主目录已经存在。…

专业本的C语言,以解决本专业问题为导向的C语言程序设计课程教学探索

以解决本专业问题为导向的C语言程序设计课程教学探索发布时间:2019-08-07 来源: 摘 要 针对C语言程序设计课程在计算机及其相关专业中存在的“狭义工具论”的教学现状&#xff0c;本着“以应用能力培养为目标、以计算思维为手段”的原则进行知识选取和教学内容、教学案例、教学…

HotSpot增量Java垃圾收集器

在我最近的博客文章“ 确定活动的HotSpot垃圾收集器”中 &#xff0c;我描述了可用于确定HotSpot JVM &#xff08;Java进程&#xff09;正在使用的垃圾收集器&#xff08;当从命令行参数&#xff08;标志&#xff09; 中看不出来&#xff09;时可以使用的不同方法。传递给Java…

修改已存在用户的所属组(usermod用法)

转载自&#xff1a;http://blog.163.com/zhzh_lin/blog/static/40538715200771503221224/ 修改使用者帐号 名称 usermod - 修 改 使 用 者 帐 号 语法 usermod [-c comment] [-d home_dir [ -m]] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[,.…

c语言如何查找空指针,c语言中的空指针

#include#include#define SAFE_MALLOC(n) safe_malloc(n)#define SAFE_FREE(p)safe_free((int**)(&(p)))//将变量指针赋值为空指针//若变量本身为空&#xff0c;则提示出现野指针void safe_free(int **p){if(*p){free(*p);*p NULL;printf("这不是野指针!!!,好开心. _…

eclipse pmd使用_使用您自己的规则在Eclipse中自定义PMD

eclipse pmd使用PMD是非常好的Java代码扫描程序&#xff0c;可帮助您避免潜在的编程问题。 它可以轻松扩展以满足您的需求&#xff0c;并且本文将为您带来与JPA的Enumerated注释用法相关的自定义PMD规则的简单示例。 在继续阅读之前&#xff0c;您应该检查我以前的文章之一-JPA…

linux bash source 0,linux中BASH_SOURCE[0](转)

在C/C中&#xff0c;__FUNCTION__常量记录当前函数的名称。有时候&#xff0c;在日志输出的时候包含这些信息是非常有用的。而在Bash中&#xff0c;同样有这样一个常量FUNCNAME&#xff0c;但是有一点区别是&#xff0c;它是一个数组而非字符串&#xff0c;其中数组的第一个元素…

如何将自定义数据源集成到Apache Spark中

如今&#xff0c;流数据是一个热门话题&#xff0c;而Apache Spark是出色的流框架。 在此博客文章中&#xff0c;我将向您展示如何将自定义数据源集成到Spark中。 Spark Streaming使我们能够从各种来源进行流传输&#xff0c;同时使用相同的简洁API访问数据流&#xff0c;执行…

linux用户管理练习题

转载自&#xff1a;http://blog.sina.com.cn/s/blog_6a8d2f120100qiyj.html 1)新建一个组group1,新建一个系统组group2 参考答案: groupadd group1 groupadd -r group2 cat /etc/group /etc/gshadow|grep group[1-2] 2)更改组group2的GID为103,更改组名为grouptest 参考答案:…

闪念-许久未来一切没变

好久好久没来逛社区了&#xff0c;前几天有空登录进来看看&#xff0c;好多以前的老朋友都还在&#xff0c;甚是欣慰。有种亲切的感觉&#xff0c;时间真的很快&#xff0c;差不多有3-4年没来玩社区了。经历了两家互联网行业级Top3的公司一度没有时间逛社区&#xff0c;玩社区交…

C语言麻将递归,C++数据结构与算法——麻将胡牌算法(二:完全胡牌算法)

虽然单花色胡牌算法面试时写出来了&#xff0c;但是完整的胡牌算法却没有写&#xff0c;既然遇到了&#xff0c;秉着不抛弃不放弃的精神&#xff0c;当然不能原谅懒惰的自己了。下面这篇为一个完整的胡牌算法。胡牌规则除了以下几点&#xff0c;其余与单花色胡牌规则一致&#…

第一行代码-第一章

模拟器和真机切换 点击app选择Configuration&#xff0c;Target选择USB设备或模拟器 真机不能获取debug日志 以360手机为例 1.拨号界面输入“*20121220#”&#xff0c;进入工程模式&#xff0c;点击日志输出等级。 2.修改以下选项 Log print enable 选 enable Java log level 选…

啊哈c语言推箱子小游戏,啊哈C入门版学完了,现发推箱子源代码~

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼该推箱子拥有对成绩的记录功能&#xff0c;因此,请挑战自己的最少步数吧&#xff01;源代码如下&#xff1a;#include #include int main(){system("color 0a");char a[9][11]{" ###### "," # ###",…

AIDA64制作机箱副屏/性能监控屏, 刷新慢问题

AIDA64制作机箱副屏/性能监控屏, 刷新慢问题 手上有闲置的手机/平板, 非闲置也行, 毕竟也没人边刷手机边打游戏吧AIDA64可以监控大多数参数, 放到一些酷炫的LCD模板上, 通过手机/平板等的浏览器就可访问这个页面, 实现无线监控 在网上找一个AIDA64, 安装文件-设置-LCD找到Rem…

javaone_JavaOne 2012:Java策略主题演讲和IBM主题演讲

javaone与 JavaOne 2010 相似&#xff0c;我对JavaOne 2012有了一个粗略的起点。由于“计算机和打印机技术上的困难”&#xff0c;办理登机手续的人花了70分钟为我提供JavaOne徽章。 尽管我不是世界上最有耐心的人&#xff0c;但比等待更令人失望的是&#xff0c;我错过了参加“…

常用正则表达式(?i)忽略字母的大小写!

转载自&#xff1a;http://blog.csdn.net/iwanttoknow7/article/details/5773285 1。^/d$  //匹配非负整数&#xff08;正整数 0&#xff09; 2 。 ^ [ 0 - 9 ] * [ 1 - 9 ][ 0 - 9 ] * $   // 匹配正整数 3 。 ^ (( - /d) | ( 0))$   // 匹配非正整数&#xff08;负…

内存刷新机制

red log buffer、data buffer、binlog cache。在O和M中&#xff0c;讲究日志先行策略&#xff0c;就是一条DML语句进入数据库之后&#xff0c;都会先写日志&#xff0c;再写数据文件。 1.red log&#xff0c; 重做日志文件&#xff0c;用于记录事务操作的变化&#xff0c;记录的…

android 字符串对齐,android – 使用Spanable String对齐ImageSpan

我知道有很多相同类型的问题可供使用,我尝试了很多解决方案,但所有这些问题都达不到我的要求.我的问题是我必须在包含Spanable字符串和Imagespan的文本之间添加动态行间距,但是当我添加行间距时,文本和图像的对齐会变形.我已经尝试了Stackoverflow上几乎所有可用的解决方案,如t…