首页 > 其他分享 >maven 多模块版本统一

maven 多模块版本统一

时间:2025-01-04 21:33:55浏览次数:1  
标签:版本 模块 maven jpaas starter revision

1.概述

在使用maven开发的时候,我们会使用到多模块开发,比如我们开发一些starter,我们可以在一个项目下开发多个starter,如果每个模块都有一个版本,我们需要对每个版本进行调整。这样会很麻烦。所以我们需要实现多个模块实现版本统一,在引用的时候实现统一版本就可以了。

2.实现方法

在maven 中有一个特殊的变量,revision这个变量可以在多个模块下实现继承。

  • 父模块配置

比如我们创建一个父模块。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.redxun</groupId>
    <artifactId>jpaas-commons</artifactId>
    <description>通用组件</description>
    <packaging>pom</packaging>
    <version>${revision}</version>

    <properties>
        <revision>20250104-RELEASE</revision>
	</properties>
	<modules>
        <module>jpaas-redis-spring-boot-starter</module>
        <module>jpaas-common-spring-boot-starter</module>
        <module>jpaas-db-spring-boot-starter</module>
	</modules>
	
	<build>
        <plugins>
            <!-- 添加flatten-maven-plugin插件 -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>flatten-maven-plugin</artifactId>
                <version>1.3.0</version>
                <inherited>true</inherited>
                <executions>
                    <execution>
                        <id>flatten</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>flatten</goal>
                        </goals>
                        <configuration>
                            <!-- 避免IDE将 .flattened-pom.xml 自动识别为功能模块 -->
                            <updatePomFile>true</updatePomFile>
                            <flattenMode>resolveCiFriendliesOnly</flattenMode>
                            <pomElements>
                                <parent>expand</parent>
                                <distributionManagement>remove</distributionManagement>
                                <repositories>remove</repositories>
                            </pomElements>
                        </configuration>
                    </execution>
                    <execution>
                        <id>flatten.clean</id>
                        <phase>clean</phase>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

上面的插件是需要配置的,他的作用是在发布的时候,将${revision} 变量使用属性进行替换。

我们可以看到,在本地仓库我们可以看到 这个 ${revision} 被替换成了实际的版本,包括子模块的版本。

  • 子模块配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.redxun</groupId>
        <artifactId>jpaas-commons</artifactId>
        <version>${revision}</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>jpaas-common-core</artifactId>
    <name>jpaas-common-core-${version}</name>
    <description>公共通用组件</description>
    <packaging>jar</packaging>

</project>

我们在子模块中,不需要再pom.xml 指定版本,另外groupId也可以不指定。

标签:版本,模块,maven,jpaas,starter,revision
From: https://www.cnblogs.com/yg_zhang/p/18652429

相关文章

  • WiFi+4G摄像头拍照图传模块(夜视2K高清1080P)-外部引脚触发拍照http post上传到服务器
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/product/audioCamera.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  测试1......
  • ROS节点架构设计:提高模块化与可扩展性
    在ROS2(RobotOperatingSystem2)的开发中,节点的架构设计是构建高效、稳定和可扩展机器人系统的基石。一个设计良好的节点架构不仅有助于提升系统的模块化水平,还能极大地增强代码的可维护性。本文将深入探讨ROS2中的三种常见节点架构模式:分层架构、微服务架构和事件驱动架......
  • Maven仓库配置&&在idea中配置Maven
    一、Maven仓库配置1.1修改本地仓库位置maven安装好后,默认本地仓库在c盘,这边建议修改为其他地方,随着后续的开发仓库占用的内存会逐渐增大。1.2修改maven的配置文件文件位置 :conf里面的settings.xml文件<!--将53行注释内代码,复制出来,粘贴到55行,修改路径为自己本地......
  • C语言:三子棋plus版本如约而至
    唉,想了好久,这才想出一个可行的方案,来与大家分享,也希望鄙人的想法可以抛砖引玉,让大家有更多的想法来完善这个游戏,话不多说,让我们开始吧(阅读提醒,希望各位先把鄙人先前写的三子棋的游戏的博客先看一看再来阅读此文)OK,我们这次的主要任务就是完善电脑下棋,致力于写一个更加完善的AI,n......
  • WiFi+4G摄像头拍照图传模块(夜视2K高清1080P)-定时拍照http post上传到服务器,然后低
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/product/audioCamera.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 提示!1,......
  • Zabbix5.0版本(自定义监控+报警+图版模型)
    目录1.自定义监控(1)监控系统登入数量(2)监控TCP22端口是否存活,并做值映射(3)自定义监控服务器内存百分比(4)配置多条件触发2.自定义报警(1)配置邮件发件人,我用的qq邮箱,在设置账户里,开启服务,邮箱同理(2)配置报警媒介类型(3)开启动作(4)配置收件人(5)dd压测是否发送邮箱(6)自定义告警内......
  • C语言实现通讯录(静态的版本)
    通讯录的实现框架静态的版本实现一个通讯录:人的信息:名字+年龄+性别+电话+地址1.存放100个人的信息2.增加联系人3.删除指定联系人4.查找联系人5.修改联系人6.显示联系人7.排序测试功能test.c通讯录相关的实现contact.c通讯录相关的声明contact.h......
  • Java学习笔记07-加油站支付小模块
    需求:某加油站为了吸引更多的车主,推出如下活动,车主可以办理金卡或银卡。卡片信息包括:车牌号码、车主姓名、电话号码、卡片余额。金卡办理时入存金额必须>=5000元,银卡办理时入存金额必须>=2000元,金卡支付时享受8折优惠,银卡支付时享受9折优惠,金卡消费满200元可以提供打印免费洗......
  • javaweb仓库仓储系统出入库模块设计
    目录项目介绍具体实现截图开发核心技术:写作提纲开发过程思路核心代码部分展示实验方案:详细视频演示源码获取方式项目介绍本系统主要包括管理员和员工;主要包括:主页、个人中心、员工管理、客户信息管理、供应商管理、仓库信息管理、货物类型管理、货物信息管理、货物......
  • 请说下在TypeScript中命名空间与模块的区别?
    在TypeScript中,命名空间和模块是两个重要的概念,但它们之间存在一些关键的区别。命名空间(Namespace)命名空间,也被称为内部模块,是TypeScript早期版本中用于组织代码的一种方式。它允许你将相关的类型、变量、函数等封装在一个命名空间内,以避免命名冲突,并提供更好的代码组织结构。命......