首席架构师推荐:金融保险领域数字化转型实践--如何优雅地修改业务中台中分层应用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

相关文章

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二