首席架构师推荐:金融保险领域数字化转型实践--如何优雅地修改业务中台中分层应用Maven多模块的版本号?(命令导入式)
我们在中台构建中提供了底层的中台能力服务的基础中间件构建,其应用架构沿用阿里的风格,使用了分包的应用架构方式。在构建中我们会基于高内聚低耦合的方式对模块进行隔离化处理。具体方式见下图:
我们用Maven建立一个项目时,包含了多个子Model,我们想把一个子Model打包deploy到私服上去,就需要对版本号进行统一的管理。
具体需要如下:
1.从父节点把整个project都deploy上去,这时别人才能拉去到你上传的model。
2.保证整个project中所有model的根pom的version一致。
但中台项目的迭代周期非常快,在生产需要使用release版本发布,由于release版本每次deploy时版本号不能重复,所以就需要每次都修改根pom的version和子model的parent中的version。这时,就会有以下问题需思考:
1 正式版不能重复发布,所以版本号每次上线都要更改;
2 当项目中包含几个子模块时,通常我们想让子模块的版本号跟父项目的版本号一致;
3 子模块也会相互依赖;
根pom版本号相关配置:
<groupId>com.****.****</groupId>
<artifactId>****</artifactId>
<packaging>pom</packaging>
<version>1.0.0.2-SNAPSHOT</version>
<name>${project.artifactId}</name>
根pom相关项目依赖:
<!--项目依赖 -->
<dependency>
<groupId>com.****.****</groupId>
<artifactId>****-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.****.****</groupId>
<artifactId>****-collect</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.****.****</groupId>
<artifactId>****-core</artifactId>
<version>${project.version}</version>
</dependency>
<!--项目依赖 End -->
****-common子模块pom配置:
<parent>
<artifactId>aaaa</artifactId>
<groupId>com.****.****</groupId>
<version>1.0.0.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>*****-common</artifactId>
<name>${project.artifactId}</name>
<description>通用共享模块</description>
其他的子模块配置与上一致
版本升级命令:
mvn versions:set -DnewVersion=1.0.0.3-SNAPSHOT -DgenerateBackupPoms=false
执行上述命令后会把个模块的版本号改为1.0.0.3-SNAPSHOT
- DnewVersion: 设置父pom版本,子pom中parent.version属性
- DgenerateBackupPoms=false: 这个参数默认为true,false表示修改pom之后不生成备份文件,直接生效。
验证:
1 在IDEA右侧点击 install
在本地仓库就可以看见发布的包,在根pom执行deploy就可以发布到私有仓库;
本文地址:https://blog.csdn.net/u012921921/article/details/107553498