Maven多模块版本统一管理

问题

在开发一些工具类的时候分了很多模块,类似下图:

每次改动版本号都要手动去更改每一个子模块的版本号,非常的不方便,所以:

解决

Maven官方文档说:自 Maven 3.5.0-beta-1 开始,可以使用 ${revision}, ${sha1} and/or ${changelist} 这样的变量作为版本占位符。

可以使用maven占位符${revision}来解决这个问题:

注意:只能命名成”revision”,不可以命名成其他的

注意:Idea下使用${revision}定义Parent版本时会提示错误“Reports that usage of properties in modules parent definition is prohibited”,但并不影响使用,只是Idea不支持这种写法而已,升级IDea版本也可以解决

父模块:

在properties中定义revision标签.

 <artifactId>kcommon</artifactId><version>${revision}</version><packaging>pom</packaging><properties><!-- 全局版本控制,如果要修改版本号,修改此处即可--><revision>1.4.1-SNAPSHOT</revision></properties>

子模块

可以直接使用${revision}指定父模块的版本:

 <parent><artifactId>kcommon</artifactId><groupId>com.xxxxk.aanan</groupId><version>${revision}</version><relativePath>../pom.xml</relativePath></parent>

子模块的依赖

多模块工程结构下,会有很多模块依赖的情况,应该使用${project.version}来定义依赖(同父工程下的依赖)的版本

install或者depoy

这么操作下来,是可以成功install或者depoy的,但是如果别人这样引用了你的包,然后打包的时候就会报错:

提示:${revision}占位符出错

如何解决:

必须使用插件flatten-maven-plugin来解决:

<plugins> <plugin><groupId>org.codehaus.mojo</groupId><artifactId>flatten-maven-plugin</artifactId><version>1.1.0</version><configuration><!-- 是否更新pom文件,此处还有更高级的用法 --><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>

Maven多模块版本统一管理相关推荐

  1. IDEA如何配置Maven及版本统一管理

    1.Maven安装 前往官网下载:https://maven.apache.org/download.cgi 将文件解压自行存放,并在刚刚下载的maven存放目录下新建文件夹: maven-repos ...

  2. Maven父工程(统一管理依赖)

      之前一段时间,我和在其他公司工作的同行朋友聊天时无意间聊到项目依赖问题,发现很多公司(包括我们公司)都是有自己一个统一的父工程,而这个工程没有任何的逻辑代码,说起来只有一个pom.xml文件,而这 ...

  3. 使用自动化插件release来管理maven项目的版本发布

    在实际开发过程中,特别是现在推崇的敏捷开发,项目版本的发布非常频繁,有可能是一周就一个版本.对于多模块构建的项目,如何在发布时统一升级项目版本,如果都由人来操作,很容易就漏改某个模块的版本,导致出现问 ...

  4. maven 公共模块依赖_「spring-boot 源码解析」spring-boot 依赖管理

    问题 maven 工程,依赖管理是非常基本又非常重要的功能,现在的工程越来越庞大,依赖越来越多,各种二方包.三方包太多太多,依赖冲突处理起来真是让人头疼,经常需要涉及到多个地方需要调整. 微信公众号: ...

  5. maven多模块 统一版本管理 的正确姿势 (CI Friendly Versions) - ${revision}

    在使用Maven多模块结构工程时,配置版本是一个比较头疼的事.继承版本,依赖版本,自身版本,都需要单独定义,很是麻烦. 版本号变更使用mvn versions:set,有时候也可能导致版本号不一致.不 ...

  6. Maven —— 统一管理依赖的版本号

    使用<properties>标签进行统一管理版本,<properties>内使用自定义标签统一声明版本号,在需要统一版本的位置,使用${自定义标签名}引用声明的版本号. 注意: ...

  7. eclipse中用maven多模块管理,然后主项目无法调用其他被依赖项目里的方法,解决办法

    eclipse中用maven多模块管理,然后主项目无法调用其他被依赖项目里的方法,解决办法 参考文章: (1)eclipse中用maven多模块管理,然后主项目无法调用其他被依赖项目里的方法,解决办法 ...

  8. maven使用中央仓库没有的jar包001---Maven自定义上传第三方包到3rd party(第三方无依赖jar和本地扩展类加入maven统一管理)

    Maven自定义上传第三方包到3rd party(第三方无依赖jar和本地扩展类加入maven统一管理) 注:如果图片太小,则可以下载查看,CSDN,不提供点击放大! 1:用浏览器登陆nexus服务器 ...

  9. 市内移出版本2.0(1、一页显示15条。2、增加控制标志。3、打印表格时绑定的list的优化。4、保存迁出登记信息时根据业务流水号判断增加还是修改。5、统一管理常量)

    HjdjConstants.java package cn.hnisi.gdrk.utils; /** * * @author yanghanming * @function 存放户籍登记的相关常量 ...

最新文章

  1. python exec函数_Python3 exec 函数
  2. 趋势科技全球首席安全官ED:人类迈向智能社会进程中不能失去掌控力
  3. 2022年人工智能全球最具影响力学者榜单AI 2000
  4. POJ 3264 Balanced Lineup
  5. 银河麒麟可执行文件双击,闪退问题
  6. Spring Bean的生命周期及接口回调
  7. 服务器维护 文档,ERP系统维护服务器维护管理文档.docx
  8. [北京]招聘C++程序员
  9. E 帮 SeSe 的一篇示例
  10. 工时分析怎么分析?分享:实用的工时分析方法及软件工具!
  11. FME转换器参考手册目录汉化索引
  12. 人力资源管理系统HRMS 天下三分 煮酒论英雄
  13. php全套之七,php程序员工具箱
  14. 玩机:解决小米手机锁屏忘记密码无法解锁
  15. 为什么计算机没有桌面显示不出来,​为什么电脑图片显示不出来
  16. linux程序的常用保护机制
  17. First non-repeating character
  18. Unity 3D模型展示框架篇之自由观察(Cinemachine)
  19. html中如何设置动画鼠标,使用animate动画库添加鼠标经过动画
  20. unity hdrp的TAA

热门文章

  1. 社保公积金缴纳流程(分享)
  2. 警惕AI,我搭建了一个“枪枪爆头”的视觉AI自瞄程序,却引发了一场“山雨欲来”
  3. DEM比例尺和分辨率对照
  4. 科斯经济学与机械钟:技术如何影响我们这个社会? | ArcBlock 分享
  5. 结构型模式-组合(composite)
  6. leetcode198强盗抢劫
  7. VM快照磁盘不能打开问题
  8. AXI4 STREAM DATA FIFO
  9. 2022,音乐号自媒体起号涨粉保姆级攻略,这是个收获的季节。
  10. 离心泵水力设计——叶轮设计——8 叶片加厚