scm maven_在运行时访问工件的Maven和SCM版本

scm maven

您可以轻松地告诉Maven在JAR清单文件中包含工件的版本及其Git / SVN /…修订版,然后在运行时通过getClass()。getPackage访问该信息。 getImplementationVersion() 。 (所有功劳归功于MarkusKrüger和其他同事。)

在清单中包括Maven工件版本

(注意:如果您还想包含SCM修订版,则实际上将不希望使用它;请参见下文。)

pom.xml:

<project>...<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId>...<configuration><archive><manifest><addDefaultImplementationEntries>true</addDefaultImplementationEntries><addDefaultSpecificationEntries>true</addDefaultSpecificationEntries></manifest></archive></configuration>...</plugin></plugins></build>...
</project>

然后,JAR文件的结果MANIFEST.MF将包括以下条目,其值来自指示的属性:

Built-By: ${user.name}
Build-Jdk: ${java.version}
Specification-Title: ${project.name}
Specification-Version: ${project.version}
Specification-Vendor: ${project.organization.name
Implementation-Title: ${project.name}
Implementation-Version: ${project.version}
Implementation-Vendor-Id: ${project.groupId}
Implementation-Vendor: ${project.organization.name}

(规范供应商和实施供应商来自POM的组织/名称。)

包括SCM修订版

为此,您可以使用生成属性$ {buildNumber}的内部版本号Maven插件 ,也可以从Jenkins或Hudson(对于Subversion为SVN_REVISION,对于Git为GIT_COMMIT) 传递的环境变量中检索它。

仅对于git,您还可以使用maven-git-commit-id-plugin ,该插件可以替换现有资源文件中的字符串,例如$ {git.commit.id}(使用maven的资源过滤,必须启用)。实际值或将它们全部输出到git.properties文件中。

让我们使用buildnumber-maven-plugin显式创建清单条目,其中包含内部版本号(即修订版)

<project><build><plugins><plugin><!-- Create the property $buildNumber holding the current Git revision --><groupId>org.codehaus.mojo</groupId><artifactId>buildnumber-maven-plugin</artifactId><version>1.2</version><executions><execution><phase>validate</phase><goals><goal>create</goal></goals></execution></executions><configuration><doCheck>false</doCheck><doUpdate>false</doUpdate></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>2.4</version><configuration><archive><manifestEntries><Implementation-Title>${project.name}</Implementation-Title><!-- buildNumber is produced at runtime by buildnumber-maven-plugin --><Implementation-Version>${project.version} ${buildNumber}</Implementation-Version></manifestEntries></archive></configuration></plugin>
...

访问版本和修订版

如上所述,您可以通过getClass()。getPackage.getImplementationVersion()和getClass()。getPackage.getImplementationTitle()访问代码中的清单条目。

资源资源

  • SO:如何在运行时获取Maven Artifact版本?
  • Maven存档器文档

参考: The Holy Java博客上的JCG合作伙伴 Jakub Holy可以在运行时访问工件的Maven和SCM版本 。

翻译自: https://www.javacodegeeks.com/2013/05/accessing-an-artifacts-maven-and-scm-versions-at-runtime.html

scm maven

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

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

相关文章

2020-08-24 光纤通信第五章知识点整理

第五章 无源光器件和WDM技术 目录 5.1 无源器件的几个常用性能参数 1 5.2 光纤和波导型无源光器件 2 5.2.1 光连接器和光耦合器 2 5.2.2 偏振控制器 3 5.2.3 光纤布拉格光栅 4 5.2.4 Mach-Zahnder滤波器 5 5.2.5 非线性环路镜 5 5.3 光学无源器件 6 5.3.1 偏振分束器 6 5.3.2 光…

使用Java 9向Javadoc搜索添加术语

有一个相对较旧的网页&#xff0c;称为“ Proposed Javadoc Tags ”&#xff0c;最初似乎是与Javadoc 1.2一起编写的&#xff0c;其中列出了“ Sun有朝一日可能会在Javadoc中实现的标签”。 在此列表中的标签是category &#xff0c; example &#xff0c; tutorial &#xff0…

Java学习、简单代码编译

【2.1】求明天是星期几 public class study { public static void main(String args[]) { short i7; short tomorrow,yesterday; tomorrow (short) ((i1) % 7); yesterday (short)((i-17) % 7); System.out.print(“tomorrow:”tomorrow" “”\n"); System.out.pr…

Java学习:类的封装、继承和多态

【3.1】声明日期类及使用日期对象 public class MyDate{ //类声明 int year,month,day; //成员变量&#xff0c;表示年月日 void set(int y,int m,int d) //成员方法、设计日期值 { yeary; monthm; dayd; } void set(MyDate d) //将当前对象值设置为参数值&#xff0c;重载 { …

同步器 java_您可能不知道的五个高级Java同步器

同步器 java除了基于每个Java对象具有的锁定位的通用同步外&#xff0c;您还可以使用Java中更复杂的同步器&#xff0c;例如&#xff1a; 信号量 –使用许可的概念表示一个位置中允许的最大线程数。 当使用值1时&#xff0c;其行为类似于同步&#xff0c;也称为二进制信号量。…

Java语言学习概述

md:创建新的文件夹 上面这行作用&#xff1a;将name&#xff1a;Tom,age12写入到文件1.doc中&#xff0c;也就是说先建个文档&#xff0c;再把这句话写进去。 del *.txt 作用&#xff1a;删除以txt结尾的所有文件 rd team2 作用&#xff1a;删除team2文件夹&#xff08;且这…

在CDI应用程序中使用@Alternative

在许多情况下&#xff0c;您可能希望拥有一个以上版本的Bean&#xff0c;并将其用于不同的目的。 备用bean的典型理由是出于测试目的&#xff0c;其中备用bean提供模拟数据。 为了获得实时数据&#xff0c;“真实” bean必须连接到的实时系统的好处是远程&#xff0c;或者在测试…

小狐狸ChatGPT付费创作系统 前端对话提示undefined index:temperature解决方法

很多会员使用着ChatGPT付费创作系统&#xff0c;特别是新安装系统后前端输入对话时提示错误undefined index:temperature&#xff0c;检查了反代、检查了KEY均正常&#xff0c;这问题主要是因为后台设置里新用户免费送对话次数为空&#xff0c;没设置赠送次数原因&#xff0c;导…

第二章 Java基本语法(一)

本文主要内容&#xff1a; 关键字、标识符、变量、类型转换、进制转换、运算符 一、关键字 二、标识符 比如&#xff1a;类名&#xff0c;变量名&#xff0c;方法名&#xff0c;接口名&#xff0c;包名。。。 小技巧&#xff1a;直接在我的电脑输入cmd&#xff0c;就可以打开…

第二章 Java基本语法(二)

本文主要内容&#xff1a; 运算符、if-else、switch-case 一、位运算符 运算符之五&#xff1a;位运算符 每左移一位&#xff0c;相当于是在原来的基础上乘2. int i 21; System.out.println(“i<<2:”(i<<2)); 输出&#xff1a;i<<2:84 结论&#xff1a; …

java 断点_每个Java开发人员应拥有的持久断点

java 断点当开发人员使用Java进行工作时&#xff0c;即使您尝试调试其他内容&#xff0c;也总是会遇到一些失败的情况。 这是应该在每个IDE中启用的持久断点的列表。 &#xff08;恕我直言&#xff09; 是的&#xff0c;从理论上讲&#xff0c;您应该能够从良好的日志记录实现…

第二章 Java基本语法(三)

本文主要内容&#xff1a; 循环结构、特殊关键字break和continue的使用&#xff0c;质数问题的优化 循环结构&#xff1a;Boolean类型 程序编写&#xff1a; 从键盘输入两个正整数m和n&#xff0c;找出他们的最大公约数和最小公倍数。 import java.util.Scanner; public clas…

用Priam设置Cassandra

前面已经解释了如何在AWS中设置Cassandra 。 所描述的设置有效&#xff0c;但在某些情况下可能还不够。 例如&#xff0c;它不能为您提供制作和还原备份的简便方法&#xff0c;添加新节点依赖于自定义python脚本&#xff0c;该脚本会随机选择一个种子。 因此&#xff0c;现在我…

Matlab入门(一)

MATLAB学习笔记 本系列主要内容来源&#xff1a;matlab官方付费课程的学习笔记 截图较多&#xff0c;之后更新会尽量增加文字说明 matlab简单常用的命令 数组 round:四舍五入函数。

MATLAB入门(二)

可以使用 plot 函数在一张图上绘制两个相同长度的向量。 plot(x,y)plot 函数接受一个附加参数。使用该参数&#xff0c;您可以通过在引号中包含不同符号的方式来指定与之对应的颜色、线型和标记样式。 plot(x,y,"r--o")以上命令将会绘制一条红色 虚线 (–)&#x…

Spring @Lazy批注用例

Spring框架几乎可以毫不费力地为您解决许多常见的编程问题&#xff0c;但是它的某些功能比其他功能鲜为人知。 在本文中&#xff0c;我们将仔细研究属于该组的Lazy批注。 阅读了几个示例之后&#xff0c;您应该能够将注释应用于日常开发任务。 1. 懒豆初始化 Spring的默认行为…

MATLAB入门(三)

求平均值 两种方法生成列向量 读取文件 将数据保存到小数点后两位 result round(M,2);将矩阵中的每个元素都三次方 x3 x.^3将矩阵中的数据按照升序排序 sort(data)创建一个行变量计算每一个列变量的平均值 avg mean(data)diff函数 Y diff(X) 计算沿大小不等于 1…

Java学习 第三章 数组(一)一维数组

第三章 数组 3-1 数组的概述 数组&#xff1a;多个相同类型数据按一定的顺序排列的集合&#xff0c;并使用一个名字命名&#xff0c;并通过编号的方式对这些数据进行统一管理。 数组相关概念&#xff1a; 数组名、下标&#xff08;索引、角标&#xff09;、元素、数组的长度 数…

mapreduce 算法_MapReduce算法–了解数据联接第1部分

mapreduce 算法在本文中&#xff0c;我们继续执行一系列实现算法的系列&#xff0c;该算法在使用MapReduce进行数据密集型文本处理中找到&#xff0c;这一次讨论数据联接。 虽然我们将讨论在Hadoop中联接数据的技术并提供示例代码&#xff0c;但在大多数情况下&#xff0c;您可…

几个有用的word小技巧,保准提升效率~

这几天改报告改到头秃。年底了&#xff0c;实验室各种项目在结项&#xff0c;作为一名研一新生&#xff0c;理所应当地承担起了体力活的工作。主要负责项目报告的研究背景调研、报告汇总、格式调整等。 格式调整&#xff0c;看起来非常简单的一项工作&#xff0c;却是最费时费…