快照/发布:Maven 项目的版本控制策略

Posted

技术标签:

【中文标题】快照/发布:Maven 项目的版本控制策略【英文标题】:Snapshot/Releas: versioning strategies for Maven projects 【发布时间】:2020-04-29 15:56:30 【问题描述】:

我希望得到一些关于这个问题的反馈:

假设我们有 Maven 项目 A1A2 以及另外 5 个依赖于它们的项目(每个项目都依赖于一个、另一个或两者。没关系)。

到目前为止,我们始终发布相同的 SNAPSHOT 版本的 A1A2,因此依赖项目始终与它们同步。 您可以想象,问题在于任何更改都可能是破坏性更改,迫使我们尽快修复错误。

另一方面,使用releases 版本对A1A2 进行版本控制可能会导致其他项目很快落后。如果找不到其他简单有效的解决方案,我将采用这种方法。

混合方法snapshot/version 对我们来说太过分了,因为我们很少发布有趣的更改(针对相关项目)。

您还有其他方法可以推荐吗?

谢谢你们!

【问题讨论】:

"使用发布版本控制 A1 和 A2,可能导致其他项目滞后" 我的意思是没有什么能阻止你频繁发布。你在使用 maven 发布插件吗? 嗨@CoderinoJavarino,感谢您的回答。是的,我们可以随心所欲地发布,但我担心其他项目会很少更新A* 版本,如果引入了许多(破坏性?)更改,这可能会很乏味。 ...不,我不使用 maven-release-plugin。它有什么用处? 【参考方案1】:

标准建议是:

如果您构建 5 个项目之一的发布版本,它应该只依赖于发布版本,即 A1 和 A2 应该在发布版本中引用。

这是为了确保构建的可重复性。

所以我会避免从不构建 A1 和 A2 的发布版本。相反,我会构建 SNAPSHOT 版本,直到更改稳定可靠,然后再构建发布版本。

在这 5 个项目中,您可以使用像 versions:use-latest-releases 这样的 Maven 目标来更新依赖项。

【讨论】:

感谢您的回答!正如我所说,混合方法并不理想,因为它们是不断发展的内部项目,没有真正的“发布”阶段。但是自定义 maven 目标是一个非常好的主意!

以上是关于快照/发布:Maven 项目的版本控制策略的主要内容,如果未能解决你的问题,请参考以下文章

具有父 POM 的多模块项目的 Maven 版本控制

maven 快照 更新策略

如果存储库中有相同快照版本的发布版本,如何停止 Maven 构建?

版本管理

MavenMaven之使用maven快照版本机制进行多项目依赖开发

Maven2