首席架构师推荐:金融保险领域数字化转型实践--如何优雅地修改业务中台中分层应用Maven多模块的版本号?(命令导入式)

本文主要是介绍首席架构师推荐:金融保险领域数字化转型实践--如何优雅地修改业务中台中分层应用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就可以发布到私有仓库;

这篇关于首席架构师推荐:金融保险领域数字化转型实践--如何优雅地修改业务中台中分层应用Maven多模块的版本号?(命令导入式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1094722

相关文章

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

springboot依靠security实现digest认证的实践

《springboot依靠security实现digest认证的实践》HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因... 目录概述参数Demopom.XML依赖Digest1Application.JavaMyPasswo

java中ssh2执行多条命令的四种方法

《java中ssh2执行多条命令的四种方法》本文主要介绍了java中ssh2执行多条命令的四种方法,包括分号分隔、管道分隔、EOF块、脚本调用,可确保环境配置生效,提升操作效率,具有一定的参考价值,感... 目录1 使用分号隔开2 使用管道符号隔开3 使用写EOF的方式4 使用脚本的方式大家平时有没有遇到自

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

Python sys模块的使用及说明

《Pythonsys模块的使用及说明》Pythonsys模块是核心工具,用于解释器交互与运行时控制,涵盖命令行参数处理、路径修改、强制退出、I/O重定向、系统信息获取等功能,适用于脚本开发与调试,需... 目录python sys 模块详解常用功能与代码示例获取命令行参数修改模块搜索路径强制退出程序标准输入

Python pickle模块的使用指南

《Pythonpickle模块的使用指南》Pythonpickle模块用于对象序列化与反序列化,支持dump/load方法及自定义类,需注意安全风险,建议在受控环境中使用,适用于模型持久化、缓存及跨... 目录python pickle 模块详解基本序列化与反序列化直接序列化为字节流自定义对象的序列化安全注

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命