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进行版本控制的经验。
欢迎大家关注我的微信公众号(xtech100),一切讨论切磋!
这是我在百家号的原文地址
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。