Maven:多模块项目和版本控制

Mic*_*che 20 versioning maven multi-module

使用Maven进行软件版本控制和多模块项目的最佳实践是什么?

我的意思是,当我使用Maven创建一个多模块项目时,版本控制的最佳方法是什么?为所有模块使用单个版本(在顶部项目中定义)?要为每个模块使用一个版本(在每个模块的POM中定义)?我还缺少另一种方法吗?每种方法的优缺点是什么?

通常,不同的模块是否一起发布(可能共享相同的版本号)?

谢谢

vin*_*bad 6

老实说,这取决于你想做什么.多模块项目的创建有多种原因,其中一个原因是您只需要部署已更改的内容而不是所有模块.

以这种方式思考:如果你有一个非多模块项目而你只需要更改服务层中的一行,你必须重建整个项目并再次部署所有代码......即使只有你的服务层将改变.

使用多模块项目,您可以重新生成项目并仅部署更改了...您的服务.这样可以降低风险,并确保只更改了服务模块.

使用我未在此列出的多模块项目也有很多好处,但如果不保持模块的版本号同步,肯定会有很大的好处.

在构建项目时,请考虑将其部署到存储库,该存储库将所有兼容的jar放在一起进行构建(每个构建创建一个具有父级最多pom版本号的新文件夹).这样,您不需要保留有关哪些jar兼容的文档......它们都只是与内部版本号一起部署.


Tom*_*vic 5

我自己一直在寻找这个问题的解决方案,而且版本-maven-plugin正是我所需要的.我不喜欢与SCM系统通信的发布插件.版本插件正是我们所需要的:它在项目的所有poms中设置一个新的版本号:

mvn versions:set -DnewVersion=2.0.0
Run Code Online (Sandbox Code Playgroud)

然后我可以继续提交,标签和官方构建服务器构建......

编辑:

版本插件取决于maven多模块项目的组织方式:因此,它通常不会更新复杂的多模块项目中的所有POM文件.我发现sed并且找到了更可靠的工作:

sed -i 's/1.0.0-SNAPSHOT/1.0.0-RC1/g' `find . -name 'pom.xml'`
Run Code Online (Sandbox Code Playgroud)