快照/发布:Maven 项目的版本控制策略
Posted
技术标签:
【中文标题】快照/发布:Maven 项目的版本控制策略【英文标题】:Snapshot/Releas: versioning strategies for Maven projects 【发布时间】:2020-04-29 15:56:30 【问题描述】:我希望得到一些关于这个问题的反馈:
假设我们有 Maven 项目 A1
和 A2
以及另外 5 个依赖于它们的项目(每个项目都依赖于一个、另一个或两者。没关系)。
到目前为止,我们始终发布相同的 SNAPSHOT
版本的 A1
和 A2
,因此依赖项目始终与它们同步。
您可以想象,问题在于任何更改都可能是破坏性更改,迫使我们尽快修复错误。
另一方面,使用releases
版本对A1
和A2
进行版本控制可能会导致其他项目很快落后。如果找不到其他简单有效的解决方案,我将采用这种方法。
混合方法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 项目的版本控制策略的主要内容,如果未能解决你的问题,请参考以下文章
如果存储库中有相同快照版本的发布版本,如何停止 Maven 构建?