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

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

  1. 在运行时访问工件的Maven和SCM版本

    您可以轻松地告诉Maven在JAR清单文件中包含工件的版本及其Git / SVN /-修订版,然后在运行时通过getClass().getPackage访问该信息. getImplementation ...

  2. eclipse配置tomcat运行时访问路径不要项目名称

    1:双击打开tomcat 2:选择Modules,选择你要修改的项目 3:点击Edit,把path修改成空或者你自己想要的路径即可!

  3. unity保存运行时的操作_Unity运行时保存prefab的方法一则

    unity编辑器在运行状态时,prefab的apply按钮就消失了,其实此时代码访问的话是有效的. 代码如下,将会给transform的右键增加一个save prefab的选项. using Unit ...

  4. Java 进阶巩固:什么是注解以及运行时注解的使用

    这篇文章 2016年12月13日星期二 就写完了,当时想着等写完另外一篇关于自定义注解的一起发.结果没想到这一等就是半年多 - -. 有时候的确是这样啊,总想着等条件更好了再干,等准备完全了再开始,结 ...

  5. linux编译动态库未定义,linux 编译动态链接库 so,避免运行时才发现函数未 ......

    ldd  查看 elf文件依赖的  so 动态链接库 可以  export LD_LIBRARY_PATH=/path 设置 so文件的路径, nm  -u  *.so  或者 nm |grep  U ...

  6. Android RuntimePermissions运行时权限:单个运行时权限申请简例

    Android RuntimePermissions运行时权限:单个运行时权限申请简例 Android运行时权限申请的框架结构和步骤比较简单和固定,一般现状代码启动后检查当前的Android SDK版 ...

  7. JVM运行时结构、Java内存管理、JVM实例、HotSpot VM对象的创建、内存布局和访问定位

    1.JVM运行时结构 Java 运行时数据区域有程序计数器.Java虚拟机栈.本地方法栈.Java堆和方法区.其中前三个线程私有,随线程生而生,线程灭而灭:后面两个是线程间共享. 1.1 程序计数器 ...

  8. 用vs打开已有web项目运行时显示网页无法访问

    文章目录 问题 方法 问题 用vs打开已有web项目运行时显示网页无法访问 方法 文件管理器点击查看→隐藏的项目√ 删除.vs文件夹,重新启动vs并重新打开项目文件.sln,再次运行即可

  9. 我想使用Simulink模型模拟期间生成的数据更新我在App Designer中设计的GUI。换句话说,如何从App Designer访问Simulink模型的运行时参数?

    1.将使用的Simulink模型命名为"Trial.slx",将使用的App Designer应用命名为"TrialApp.mlapp".从App Design ...

最新文章

  1. 智能睡眠评估系统(包含:睡眠数据特征工程、睡眠评分、睡眠聚类、睡眠可视化分析、睡眠结论存储)
  2. 如何通过dblink truncate远程数据库上的表
  3. open,write,read与fopen,fwrite,fread的区别
  4. block与inline,inline和inline-block,块级和行内元素,行内替换和行内非替换元素
  5. gen阻抗 pcie_COM载板设计之一: PCB的设计
  6. Airmail 5 for Mac(轻量级邮件客户端)
  7. 土壤高光谱数据预处理与变换
  8. 好文汇总(不断更新)
  9. C++编译遇到未定义的引用undefined reference to ‘_imp__ZN7CStringD1Ev‘
  10. Blender插件安装不显示问题
  11. Java抽象类、接口理解
  12. linux中屏蔽定时任务,linux中的定时任务
  13. matlab中多元线性回归regress函数精确剖析(附实例代码)
  14. 数据结构3-栈的知识点整理
  15. ios开发---音乐播放器之怎么获取音乐列表
  16. 「AI白身境」一文览尽计算机视觉研究方向
  17. AcWing 4411. 三仙归洞 (简单模拟)
  18. 区块链开发公司 区块链何时能产生实际价值?
  19. 关于ping带源地址和不带源地址有什么区别呢
  20. windows登录linux xceed,Xceed Zip for ActiveX

热门文章

  1. Redis 再牛逼,也得设置密码
  2. 集合总结(Collection)
  3. 阿里巴巴对Java编程【应用结构】的规约
  4. System.gc()调用 - 适用的场景
  5. 上学的你,是不是最怕老师给家长打电话……
  6. 让java的多重继承成为现实!
  7. 《给教师的阅读建议》经典语录
  8. 我是一位老师,讲课是我的乐趣,可是……
  9. 蓝桥杯JAVA省赛2013-----B------5(有理数类)
  10. ES6 Map对象的使用