项目中如何使用Maven进行版本管理?

2021-06-30 - kblog

Maven 是一个项目管理工具,每个项目deploy到repository中以后,都有一个坐标,坐标中就包含一个版本,那个版本将是我们进行版本控制管理的一个重点。

一个产品实际可能包含10几个模块,模块间会有依赖关系,所以在项目管理中经常听到这种抱怨:

“测试环境又发不了券了?”

“是谁又把我的jar包覆盖了?”

“这个功能测试环境都测试好了,到了预生产怎么又不行了?”

“jar包又被哪个傻X覆盖了?”

这些基本上都是因为实际研发过程中版本管理混乱或者几乎没有版本管理造成的,有的是直接就一个版本用到底,所有环境都用一个版本,经常是还没上线的代码deploy到repository中,导致线上其他模块发布出现了问题。

大家可以想象一下,一个项目中可能有10几个模块,每个模块都有依赖的模块,无论是哪套环境,任何一次deploy都可能影响到其他的环境,这是多么恐怖的事情。所以,“稳定大于一切”,“应该给研发人员和测试人员应有的安全感!”

如何在maven中进行这个版本的控制呢?如何解决这些问题呢?

1.版本统一进行定义管理

定义一个统一的父pom项目,该项目只进行版本的管理,其他所有的模块的版本都在父pom中配置管理,一个模块依赖其他模块时统一继承父pom中的版本。

定义好每个迭代周期的版本后,统一修改父pom的版本,父pom中定义好各个环境的profile,不同的环境使用不同的profile。

每定义一个版本时,需要同时定义各个模块的版本号,定义好以后,更新父pom的版本号,需要使用模块新特性的就更新父pom的版本,这样就保证版本能够统一进行管理。如下图父pom项目中1.0.3版本的对应的user是1.0.2版本,order是1.0.1版本,pay是1.0.3版本。如果下一次要进行新功能开发,user修改版本为1.1.0,其他模块接口不变,那么父pom就需要进行版本升级为1.1.0,pay依赖user模块1.1.0版本就需要更新父pom的版本号。

父pom项目统一由管理员进行控制管理,每次版本修改都由管理进行发布管理。

2.支持多套环境的版本切换

maven仓库支持snapshot版本和release版本,研发环境和测试环境可以使用snapshot版本进行发布,研发环境和测试环境属于高频deploy执行的,所以保证不更新版本号每次deploy后maven打包时会更新依赖,正式环境使用relase版本,如果需要升级就更新版本号。

3.支持多版本同时存在

每个项目可以发布多个版本,不同的版本可以被不同的模块依赖,能够各取所需,比如,user模块有1.0.1-release版本和1.0.3-release版本,这两个版本可以被不同的模块引用,只有需要1.0.3-release新特性的模块才对应更新父pom的版本。

以上就是我在项目管理中实际使用maven进行版本控制的经验。

- END -

152

微服务中消息总线架构设计应用

微服务中消息总线架构设计应用

当一个O2O电商系统到达一定规模之后,就需要考虑系统的可扩展性、松耦合和组件化。一般采用的都是基于时下比较流行SpringCloud和Dubbo的分布式的微服务的架构模式,虽然模块间能够独立部署了,但是模块间的还是强依赖关系,每次改动都需要重新发版上线,产品迭代速度又快,使用分布式的消息总线设计就可以解决这些问题。

Spring Cloud配置跨域访问的五种方案?你用的是哪一种呢?

在使用SpringCloud实现微服务时,经常会碰到前端页面访问多个二级域名的情况,跨域是首先要解决的问题。 解决这个问题,可以从两方面入手,一种方案是在微服务各自的业务模块中实现,即在SpringBoot层实现,另外一种方案就是在Gateway层实现。