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存档器文档
翻译自: https://www.javacodegeeks.com/2013/05/accessing-an-artifacts-maven-and-scm-versions-at-runtime.html
scm maven
scm maven_在运行时访问工件的Maven和SCM版本相关推荐
- 在运行时访问工件的Maven和SCM版本
您可以轻松地告诉Maven在JAR清单文件中包含工件的版本及其Git / SVN /-修订版,然后在运行时通过getClass().getPackage访问该信息. getImplementation ...
- eclipse配置tomcat运行时访问路径不要项目名称
1:双击打开tomcat 2:选择Modules,选择你要修改的项目 3:点击Edit,把path修改成空或者你自己想要的路径即可!
- unity保存运行时的操作_Unity运行时保存prefab的方法一则
unity编辑器在运行状态时,prefab的apply按钮就消失了,其实此时代码访问的话是有效的. 代码如下,将会给transform的右键增加一个save prefab的选项. using Unit ...
- Java 进阶巩固:什么是注解以及运行时注解的使用
这篇文章 2016年12月13日星期二 就写完了,当时想着等写完另外一篇关于自定义注解的一起发.结果没想到这一等就是半年多 - -. 有时候的确是这样啊,总想着等条件更好了再干,等准备完全了再开始,结 ...
- linux编译动态库未定义,linux 编译动态链接库 so,避免运行时才发现函数未 ......
ldd 查看 elf文件依赖的 so 动态链接库 可以 export LD_LIBRARY_PATH=/path 设置 so文件的路径, nm -u *.so 或者 nm |grep U ...
- Android RuntimePermissions运行时权限:单个运行时权限申请简例
Android RuntimePermissions运行时权限:单个运行时权限申请简例 Android运行时权限申请的框架结构和步骤比较简单和固定,一般现状代码启动后检查当前的Android SDK版 ...
- JVM运行时结构、Java内存管理、JVM实例、HotSpot VM对象的创建、内存布局和访问定位
1.JVM运行时结构 Java 运行时数据区域有程序计数器.Java虚拟机栈.本地方法栈.Java堆和方法区.其中前三个线程私有,随线程生而生,线程灭而灭:后面两个是线程间共享. 1.1 程序计数器 ...
- 用vs打开已有web项目运行时显示网页无法访问
文章目录 问题 方法 问题 用vs打开已有web项目运行时显示网页无法访问 方法 文件管理器点击查看→隐藏的项目√ 删除.vs文件夹,重新启动vs并重新打开项目文件.sln,再次运行即可
- 我想使用Simulink模型模拟期间生成的数据更新我在App Designer中设计的GUI。换句话说,如何从App Designer访问Simulink模型的运行时参数?
1.将使用的Simulink模型命名为"Trial.slx",将使用的App Designer应用命名为"TrialApp.mlapp".从App Design ...
最新文章
- 智能睡眠评估系统(包含:睡眠数据特征工程、睡眠评分、睡眠聚类、睡眠可视化分析、睡眠结论存储)
- 如何通过dblink truncate远程数据库上的表
- open,write,read与fopen,fwrite,fread的区别
- block与inline,inline和inline-block,块级和行内元素,行内替换和行内非替换元素
- gen阻抗 pcie_COM载板设计之一: PCB的设计
- Airmail 5 for Mac(轻量级邮件客户端)
- 土壤高光谱数据预处理与变换
- 好文汇总(不断更新)
- C++编译遇到未定义的引用undefined reference to ‘_imp__ZN7CStringD1Ev‘
- Blender插件安装不显示问题
- Java抽象类、接口理解
- linux中屏蔽定时任务,linux中的定时任务
- matlab中多元线性回归regress函数精确剖析(附实例代码)
- 数据结构3-栈的知识点整理
- ios开发---音乐播放器之怎么获取音乐列表
- 「AI白身境」一文览尽计算机视觉研究方向
- AcWing 4411. 三仙归洞 (简单模拟)
- 区块链开发公司 区块链何时能产生实际价值?
- 关于ping带源地址和不带源地址有什么区别呢
- windows登录linux xceed,Xceed Zip for ActiveX