在使用Maven创建多模块项目时,软件版本控制和最佳实践是什么?
我的意思是,在多模块项目中,版本控制的最佳方法是什么?使用单个版本来管理所有模块(在顶层项目中定义),还是为每个模块使用一个版本(在每个模块的POM文件中定义)?还有其他我可能忽略的方法吗?每种方法的优缺点是什么?
一般来说,不同的模块会一起发布(可能共享相同的版本号)吗?
谢谢
在使用Maven创建多模块项目时,软件版本控制和最佳实践是什么?
我的意思是,在多模块项目中,版本控制的最佳方法是什么?使用单个版本来管理所有模块(在顶层项目中定义),还是为每个模块使用一个版本(在每个模块的POM文件中定义)?还有其他我可能忽略的方法吗?每种方法的优缺点是什么?
一般来说,不同的模块会一起发布(可能共享相同的版本号)吗?
谢谢
我自己也曾经为这个问题寻找解决方案,versions-maven-plugin正是我需要的。我不喜欢release插件与SCM系统的交互。versions插件正好满足我们的需求:它在项目的所有pom文件中设置了一个新的版本号:
mvn versions:set -DnewVersion=2.0.0
sed -i 's/1.0.0-SNAPSHOT/1.0.0-RC1/g' `find . -name 'pom.xml'`
我在我正在工作的项目中遇到了同样的问题。我决定使用单独的版本,即使只有父POM的依赖关系需要更新,如果一些受管理的依赖项发生更改。(大多数情况下就像@vinnybad描述的那样)
通过使用"org.honton.chas.exists-maven-plugin",只有实际更改的模块才会被部署到存储库中,这真的很棒,因为仅当某个服务发生更改时,相应的Docker镜像才会被发布。这避免了将不同但未更改的版本“污染”镜像存储库。
"分离版本"方法的一个主要缺点是版本控制方面的问题:
mvn release
? - Danielmvn release
。 - rudi