如何正确使用Maven与版本管理?

问题描述 投票:0回答:1

目前,我正在将ANT项目转移到Maven中,正在为如何让项目的版本管理正确工作而苦恼。目前我有大约30多个项目模块,它们都相互依赖,所以所有的东西都必须是最新版本才能正常工作。这在ANT中很容易做到,但是当涉及到Maven时,我需要对所有其他发布的项目POM进行不断的修改,让他们能够接收到这些新的变化。

我和其他几位开发者讨论过,我们决定可能甚至不需要一个带有版本号的Maven repo,我们只需要让所有的东西都有相同的版本号,然后在本地构建或通过Jenkins更新我们的.m2文件夹。这对我们的情况来说是正确的路线吗?我们这样做有什么遗漏吗?

我确实建议让我们的测试Jenkins部署到一个版本号为1.0.Beta-SNAPSHOT的repo上。我们有Jenkins的设置,当我们的测试分支更新时,就会进行构建。这意味着我不需要在本地编译该分支上的每一个项目来更新我的.m2,我只需要改变POM来将所有这些Beta-SNAPSHOT版本拉到一个地方。有什么好办法让我做到这一点,如果用这个版本号设置推送和发布,不会影响发布吗?如果我想使用我的本地版本,我就会把这个版本号切换到1.0.0,这不是在repo中,而是在我的本地.m2中。

如果有任何关于如何正确管理maven项目modules的版本号的建议,我们将非常欢迎。最好是能在发布1个projectmodules时减少对POM的修改。

java git maven jenkins
1个回答
1
投票

我们的开发人员经常为这个问题而苦恼。要更新一个版本的所有POM,需要大量的手工工作。

我们将以多模块项目为目标,这似乎也很适合你。

如果你说,所有的东西都必须一直使用最新的版本,我会把所有的项目放到一个大的多模块项目中。这意味着你有一个(git)仓库,在根目录下有一个主POM,每个模块(子项目)有一个目录,它自己的POM引用主POM作为父项目。

然后你可以运行 mvn clean install 在母体上建立 统一版本号的模块。所以发布就只是一个大的构建。

不过,你应该注意到,你用这种方式把项目(模块)紧密地捆绑在一起,但我没有理解错的话,它们已经紧密地相互关联了。

© www.soinside.com 2019 - 2024. All rights reserved.