当前位置: 首页 > news >正文

使用 Maven 内置的版本号(Version)统一控制功能

从Maven 3.5 -beta-1开始 支持内置的 ${revision} (${sha1} and/or ${changelist}的使用方法,请查看[Maven 文档][1])占位符作为 标签的值,用来控制整个项目的版本号。

<project><groupId>xxx</groupId><artifactId>xxx</artifactId><version>${revision}</version>
</project>

可以通过执行 mvn 命令设置版本号:mvn -Drevision=1.0.0-SNAPSHOT clean package

也可以通过添加属性的形式设置版本号, 可以直接调用mvn clean package

<properties><revision>2.0.0-SNAPSHOT</revision>
</properties>

该功能很好的支持了多模块应用的版本号统一(注意子模块之间依赖[1:1]以及插件的使用[2]):

<!-- parent.pom -->
<project><groupId>group</groupId><artifactId>parent</artifactId><version>${revision}</version><properties><!-- 全局均可使用的变量 --><revision>2.0.0-SNAPSHOT</revision> </properties><modules><module>child-module</module></modules><dependencyManagement><dependencies><dependency><groupId>group</groupId><artifactId>child-module</artifactId><!-- 用于统一管理子模块之间的依赖,如需子模块自行管理依赖版本号,请参考 [1] Dependencies --><version>${revision}</version></dependency></dependencies></dependencyManagement><!--对于 Install / Depoly 操作,必须使用该插件,否则无法将这个项目作为依赖添加 --><build><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>flatten-maven-plugin</artifactId><version>1.7.3</version><configuration><updatePomFile>true</updatePomFile><flattenMode>resolveCiFriendliesOnly</flattenMode></configuration><executions><execution><id>flatten</id><phase>process-resources</phase><goals><goal>flatten</goal></goals></execution><execution><id>flatten.clean</id><phase>clean</phase><goals><goal>clean</goal></goals></execution></executions></plugin></plugins></build>
</project>
<!-- child-module.pom -->
<project><parent><groupId>group</groupId><artifactId>parent</artifactId><version>${revision}</version></parent><artifactId>child-module</artifactId></project>

参考:


  1. https://maven.apache.org/guides/mini/guide-maven-ci-friendly.html "Maven CI Friendly Versions" ↩︎ ↩︎

  2. https://github.com/mojohaus/flatten-maven-plugin "MojoHaus Flatten Maven Plugin" ↩︎

http://www.jsqmd.com/news/39772/

相关文章:

  • 使用 Maven 内置的版本号(Version)统一控制功能
  • 2025年智能仓储服务商综合实力TOP5榜单:引领物流效率革命,覆盖山东、河北、江浙沪等国内线路,服务中亚五国、俄罗斯、阿富汗等国际路线
  • 2025年共享仓库服务最新TOP5推荐:山东、河北、江浙沪等国内区域,中亚、阿富汗、俄罗斯等国际地区,高效仓储解决方案引领者
  • 在ec2上部署CosyVoice2模型
  • 2025年配送中心最新综合实力TOP5榜单:引领国内国际物流新标杆
  • 每日反思(2025_11_13)
  • 2025年运输服务企业最新TOP5评测:国内、跨境物流解决方案引领者
  • 前后端全栈技术栈深度剖析:从Vue到Node.js的完整学习路径
  • 11月113日日记
  • 2025国内供应链服务企业最新TOP5评测:稳定、成本可控、合作灵活
  • 2025物流企业最新TOP5:覆盖范围广、团队更专业,成就时效与诚信
  • 疲劳数据分析与设计曲线 25
  • 11-13午夜盘思
  • 【AI翻译】分布式系统中的心跳机制
  • “ArcGIS Pro制图-模型构建器-ArcPy开发-AI-无人机实操”系列培训班预告
  • 送女生礼物推荐:如何才能送到心坎里?
  • 代码随想录Day9_字符串2
  • 2025年西北地区新媒体运营公司最新TOP5评测:AI赋能陕西甘肃品牌增长新引擎
  • 20251113日报
  • 控制领域常用希腊字母表
  • Windows 修改hosts不生效
  • 早就下好了IEDA,也算是差生文具多了
  • Pyinstaller - Python桌面应用打包的首选工具 - 详解
  • DNS record types: AAAA vs AA All In One
  • 关于Langchain更新解决Memory的引用
  • win7 打开 icmp-ping 回显
  • 旋转矩阵在导航与机器人中的应用
  • JVM之锁优化(自旋锁 适应性自旋 锁消除 锁粗化 轻量级锁 偏向锁) - 教程
  • 面试官问:什么是Java内存模型? - 教程
  • Spring AI Alibaba 项目源码学习(四)-Graph中的存储分析