gpt4 book ai didi

Maven:使用 SNAPSHOT 针对版本范围进行开发,但针对固定版本进行发布

转载 作者:行者123 更新时间:2023-12-05 08:02:18 24 4
gpt4 key购买 nike

对于任何中等复杂的软件项目,您很快就会得到复杂的依赖链。

考虑以下依赖关系树:

  A --> B --> C
`--------^

A 和 B 都依赖于 C。随着每个项目的发展,固定的依赖性会阻碍持续集成。 (例如,如果 C 更新了 A 所需的修复程序,则 B 的依赖项也需要更新...)使用 semantic版本控制我们可以使模块与版本范围保持一致,而无需不断调整 poms。

[实际上这张图更复杂。我们不需要将所有东西组合到一个多模块项目中(或以其他方式组合它们),因为这会破坏模块化。我们希望通过持续集成构建模块化软件。]

但是部署的版本应该是不可变的。它们所依赖的版本应该是固定不变的,因此今天选择的版本(及其依赖项)与明年使用的版本相同。

目标:

  • 开发人员处理 SNAPSHOT 版本(在本地或从 Hudson 选择 SNAPSHOT 依赖项)
  • 发布是针对依赖项的最新(兼容)发布版本(不包括 SNAPSHOT)
  • 版本永远不可变。根据 A=1.0.0 将始终引入相同版本的 B 和 C

问题:

  • 在 Maven 中执行此操作的最佳方法是什么?是否有描述此用例的任何链接/文档?
  • maven 发布插件能否解析版本范围并将它们放入发布中?

给定:

  • 默认情况下,maven (3.0.3) 选择版本范围内的 SNAPSHOT 依赖项。
  • 快照和发布可以部署到单独的存储库

有没有更好的方法与 maven 进行持续集成?

最佳答案

如果任何依赖项是 SNAPSHOT,发布插件将不会发布。这就是 Maven 确保发布不可变的方式。创建一个小型的多模块测试项目并在其上运行发布插件。然后你会更好地理解它的行为 - 这是我必须做的。

我从事一个包含 405 个 POM 的多模块项目,该项目由 Jenkins 构建并部署到 Artifactory。

关于Maven:使用 SNAPSHOT 针对版本范围进行开发,但针对固定版本进行发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8424572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com