与Maven一起使用软件版本和多模型项目的最佳实践是什么?

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

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

谢谢

有帮助吗?

解决方案

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

这样考虑它:如果您有一个非Multi-Module项目,并且您只需要更改服务层中的一行,则必须重建整个项目并再次部署所有代码...即使只有您服务层将改变。

借助多模型项目,您可以再生项目并只部署更改的内容……您的服务。这降低了风险,您可以确保您的服务模块更改。

您还可以使用我在这里不列出的多模块项目有很多好处,但是不将模块的版本编号保持在同步时肯定是一个巨大的好处。

当您构建项目时,请考虑将其部署到一个存储库中,该存储库将所有兼容的罐子将其放在构建中(每个构建都会使用父母最多的POM版本编号创建一个新文件夹)。这样,您就无需保留有关哪些罐子兼容的文档...它们都与构建号一起部署。

其他提示

我本人正在寻找解决这个确切问题的解决方案, 版本弹药 正是我需要的。我不喜欢与SCM系统通信的发行插件。版本插件只能完成我们所需的功能:它在项目的所有POM中设置了一个新版本号:

mvn versions:set -DnewVersion=2.0.0

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

编辑:

版本插件取决于如何组织Maven多模块项目:因此,它通常不会在复杂的多模块项目中更新所有POM文件。我发现SED并发现完成工作更加可靠:

sed -i 's/1.0.0-SNAPSHOT/1.0.0-RC1/g' `find . -name 'pom.xml'`

通常,您可以创建一个多模块项目,因为您认为各种模块是一个整体的一部分。也许是客户件,控制器件和服务件。或者也许是用服务的UI。

无论如何,要有各种模块以锁定步骤移动的版本编号是有意义的。但是Maven没有 强制执行 通常。

至于你的问题

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

我会这么认为。这是将其进行多模块项目的原因之一。否则,您可以将模块作为独立项目。

当然,这是一种充满边缘案例和例外的东西;-)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top