Maven通过flatten-maven-plugin插件实现多模块版本统一管理

正文

起因是公司开始推代码版本管理的相关制度,而开发过程中经常使用多模块构建项目,每次做版本管理时都需要对每个模块及子模块下的pom文件中parent.version和模块下依赖中的version进行修改,改的地方非常多,且非常容易漏。为此就上网查询有没有对应的简便的方法,最开始在顶层模块pom中使用<properties>指定版本进行依赖下的模块版本控制,但是通过这种方法没办法修改parent.version会出现这种bug。
在这里插入图片描述
最后上网搜索知道Maven从3.5.0-beta-1开始就支持${revision}, ${sha1} 和/或 ${changelist} 来作为占位符,并给出对应的解决方案,详情可查看官网链接
在这里插入图片描述
从官网中得知可以配合flatten-maven-plugin插件来实现maven构建,这一点在官网中也有体现

<project><modelVersion>4.0.0</modelVersion><parent><groupId>org.apache</groupId><artifactId>apache</artifactId><version>18</version></parent><groupId>org.apache.maven.ci</groupId><artifactId>ci-parent</artifactId><name>First CI Friendly</name><version>${revision}</version>...<properties><revision>1.0.0-SNAPSHOT</revision></properties><build><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>flatten-maven-plugin</artifactId><version>1.1.0</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><modules><module>child1</module>..</modules>
</project>

使用这套插件和使用方法后每个模块会多出.flattened-pom.xml这个文件,如果使用git进行管理,避免将文件上传至git库,可以在.gitignore文件下加上该文件名称

# 依赖版本配置文件
.flattened-pom.xml

子模块中如果引用其他子模块依赖,则依赖中的version必须使用${project.version}来保证依赖版本和当前模块版本一致,如果使用${revision}会出现编译失败。

最后结果是这样
在这里插入图片描述

参考文章

https://blog.csdn.net/changqing5818/article/details/131196288
https://maven.apache.org/maven-ci-friendly.html

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

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

相关文章

衣康酸(ITA)应用领域广泛 工业发酵法为其主流制备方法

衣康酸&#xff08;ITA&#xff09;应用领域广泛 工业发酵法为其主流制备方法 衣康酸&#xff08;ITA&#xff09;又称亚甲基丁二酸、甲叉琥珀酸&#xff0c;化学式为C5H6O4&#xff0c;是一种不饱和二元有机酸。衣康酸外观呈白色结晶粉末&#xff0c;含强烈刺激性气味&#xf…

【机器学习】小波变换在特征提取中的实践与应用

小波变换在特征提取中的实践与应用 一、小波变换的基本原理与数学表达二、基于小波变换的特征提取方法与实例三、小波变换在特征提取中的优势与展望 在信号处理与数据分析领域&#xff0c;小波变换作为一种强大的数学工具&#xff0c;其多尺度分析特性使得它在特征提取中扮演着…

浅析STM32H750启动文件

目录 概述 1 启动文件介绍 1.1 启动文件功能 1.2 汇编语言指令 2 启动代码细节 2.1 分配栈空间 2.2 分配堆空间 2.3 中断向量表 2.4 复位程序 2.5 中断服务程序 2.5.1 CPU内部中断程序 2.5.2 CPU内部扩展中断程序 2.6 用户堆栈初始化 3 总结 概述 本文以startup_stm3…

基于springboot实现城镇保障性住房管理系统项目【项目源码+论文说明】

基于springboot实现城镇保障性住房管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了城镇保障性住房管理系统的开发全过程。通过分析城镇保障性住房管理系统管理的不足&#xff0c;创建了一个计算机…

OCR API、文字识别接口、文字录入

人类的智慧塑造了现在这个美好的世界&#xff0c;人们建立的越来越智能的机器也会具备同样的能力。机器学习是一种全方位使用的技术&#xff0c;面对高速发展的现状&#xff0c;它将触及到方方面面。图像识别技术在一些复杂场景能够达到媲美真实人类的准确度&#xff0c;比如人…

Intewell-Win_V2.1.2_release版本正式发布-鸿道Intewell操作系统

Intewell-Win_V2.1.2_release版本 版本号&#xff1a;V2.1.2 版本发布类型&#xff1a;release正式版本 版本特点 修复此前版本中的授权问题 特殊说明 版本或修改说明 修改&#xff1a; 1.已授权设备用户ID直接从授权文件获取&#xff1b; 2.授权设备硬件指纹采集系统硬盘…

Odoo|手把手教你Odoo集成drools,完成物料规则配置与报价单自动审核!

一、背景介绍 在实际业务中&#xff0c;售前根据客户需求选择相应的产品和对应的物料来生成报价单。然而&#xff0c;在填写报价单的过程中&#xff0c;可能会出现物料漏选或数量不准确的情况&#xff0c;这会对后续备货和生产效率造成重大影响。此外&#xff0c;由于产品和物料…

ctfhub-ssrf(2)

1.URL Bypass 题目提示:请求的URL中必须包含http://notfound.ctfhub.com&#xff0c;来尝试利用URL的一些特殊地方绕过这个限制吧 打开环境发现URL中必须包含http://notfound.ctfhub.com&#xff0c;先按照之前的经验查看127.0.0.1/flag.php,发现没什么反应&#xff0c;按照题…

RocketMQ消息重复消费--一起学习吧之架构

一、定义 RocketMQ中的消息重复消费&#xff08;Duplicate Consumption&#xff09;指的是在某些情况下&#xff0c;消息可能会被多次消费&#xff0c;从而导致业务逻辑的重复执行。 重复消费是MQ中常见的问题&#xff0c;尤其在系统调用频繁的场景下&#xff0c;可能会因为超…

Java入门(JDK安装)

安装 JDK 下载 Java Downloads | Oracle 安装 下一步直接安装安装过程中&#xff0c;需要确定自己的安装位置 参考&#xff1a;D:\Java\jdk1.8.0_281_x64 演示位置 校验 终端输入 java -version 配置 1&#xff09;删除默认 javapath 默认情况下&#xff0c;可以在cm…

html渲染优先级

HTML渲染优先级主要涉及到浏览器如何解析和渲染HTML文档的过程。虽然具体的渲染顺序和优先级可能因浏览器的不同而有所差异&#xff0c;但大体上&#xff0c;HTML的渲染遵循以下基本步骤和原则&#xff1a; 解析HTML文档&#xff1a;浏览器首先会获取HTML文档&#xff0c;然后…

04 JavaScript学习:输出

JavaScript 没有任何打印或者输出的函数。 JavaScript 显示数据 JavaScript 可以通过不同的方式来输出数据&#xff1a; 使用 window.alert() 弹出警告框。使用 document.write() 方法将内容写到 HTML 文档中。使用 innerHTML 写入到 HTML 元素。使用 console.log() 写入到浏…

【GoWeb框架初探————Gin篇】

1. Gin 1.1 下载相应依赖 创建go项目&#xff0c;在项目下建立go.mod文件&#xff08;若有则跳过&#xff09; 命令行运行 go get github.com/gin-gonic/gin1.2 启动一个简单Web服务 package mainimport ("github.com/gin-gonic/gin""github.com/thinkerou/…

通过Admission Webhook限制Namespace下Nodeport Service的端口范围

背景 要给每个namspce分配Nodeport 端口范围, 不允许使用范围之外的端口. 实现对平台 nodeport 端口的统一管理 方案 Kubernetes本身不支持直接限制NodePort的范围。可以通过创建一个Admission Webhook来拦截Service创建请求&#xff0c;并在其端口字段中进行检查和限制。 …

MYSQL中如何插入、更新和删除数据

目录 一、插入(INSERT) 1.插入一行 2.插入多行 3.插入检索出的数据 二、更新(UPDATE) 三、删除(DELETE) 四、更新和删除使用时需要注意&#xff1a; *本节总结于图灵程序设计丛书&#xff0c;数据库系列——《MySQL必知必会》 一、插入(INSERT) 1.插入一行 ①INSERT I…

新手入门:大语言模型训练指南

在这个信息爆炸的时代&#xff0c;人工智能技术正以前所未有的速度渗透到我们生活的方方面面。从智能手机上的语音助手到自动驾驶汽车&#xff0c;AI的应用无处不在。而在这些令人惊叹的技术背后&#xff0c;大语言模型&#xff08;LLM&#xff09;扮演着至关重要的角色。它们不…

国外问卷调查如何做?需要借助海外住宅IP吗?

在数字化时代&#xff0c;国外问卷调查不仅是了解市场需求的重要手段&#xff0c;还成为了一项能够赚取额外收入的方式。随着全球范围内消费者行为的多样化&#xff0c;各类企业和机构越来越需要了解不同地区的用户观点和偏好&#xff0c;以优化产品和服务。 一、国外问卷调查…

C++ 比较三个数的大小

int maxValue,minValue; maxValue xSize > ySize ? xSize : ySize; maxValue maxValue > zSize ? maxValue : zSize;minValue xSize < ySize ? xSize : ySize; minValue minValue<zSize?minValue:zSize;int maxValue xSize > ySize ? xSize > zSize…

每日算法4.17

力扣287寻找重复数 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。 你设计的解决方案必须 不修…

基于flink cdc技术,在不停机情况下完成新老系统数据迁移解决方案

1.业务场景及痛点描述 当前随着业务发展&#xff0c;由于公司是做海外业务&#xff0c;公司前几年搭建了官网商城&#xff0c;并积累了一定的用户量&#xff0c;然后去年&#xff0c;由于公司发展智能机器人业务&#xff0c;开发了手机APP&#xff0c;供用户控制机器人&#xf…