gpt4 book ai didi

maven - 哪个 jar 最终出现在 Maven 增量构建的类路径上?

转载 作者:行者123 更新时间:2023-12-04 06:12:05 26 4
gpt4 key购买 nike

简单的 Maven 说明;我希望经验丰富的 Maven 开发人员可以轻松回答这个问题。

我有两个名为 mycompany-x 和 mycompany-y 的项目。 mycompany-x 被列为 mycompany-y 的依赖项,每个都有 1.0-SNAPHSOT 版本。我们的 Maven 构建由持续构建服务器部署到内部 Maven 存储库。每个快照都通过此服务器在开发人员之间共享。我们正在使用 Maven 3。

在任何给定时间,当我运行 mycompany-y 的安装目标时,mycompany-x 的存储库中可能有两个 jar:一个,标记为 1.0-SNAPSHOT,这是本地构建的结果;第二个标记为 1.0-,从我们的 Maven 存储库下载为 1.0-SNAPHSOT 的分辨率。当 mycompany-y 尝试解析 mycompany-x 的 1.0-SNAPSHOT 时,这会产生明显的歧义;我很确定 Maven 社区有一个明确的政策要解决(尽管在文档中不清楚)。

在以下场景中,构建的类路径中包含哪个 jar(本地或远程)?

  • 在 mycompany-x 和 mycompany-y 上运行 mvn install。
  • 在 mycompany-y 上运行 mvn install,而无需先前在 mycompany-x 上运行 install。
  • 在 mycompany-y 上运行 mvn install,最近构建了 mycompany-x(并且在远程存储库中没有更高版本)。
  • 在 mycompany-y 上运行 mvn install,最近构建了 mycompany-x(但在远程存储库中有更新的版本)。

  • 注: Maven: How to ensure timestamped versions of snapshots are used in classpath?引用了一个已发布的算法,我似乎在任何地方都找不到。我会接受那里的链接作为一个很好的答案。

    最佳答案

    这是我在另一篇文章中提到的链接 - Maven Dependency Resolution - A Repository Perspective .

    请注意,即使 Maven 中的 3.0.x 系列,此分辨率(不幸的是)随着时间的推移而发生了变化。见 Maven release notes针对以下问题:

    [MNG-4987] - [回归] 当解析顺序与时间戳顺序不匹配时,从错误的存储库中选择最新、发布或快照版本
    [MNG-4592] - 默认情况下,由于通信问题而无法下载的快照 Artifact 被“列入黑名单”一天。
    [MNG-4751] - 未针对版本范围解析快照版本

    configuration values for SNAPSHOT resolution也影响事情。

    这是 another poster dealing with SNAPSHOT 的示例

    唉,即使你弄明白了,你也必须向团队中的其他开发人员解释这一切。

    我们是如何解决这个问题的:我们只允许在 CI 上构建的项目声明固定的依赖项,而不是在 CI 上使用 SNAPSHOT 依赖项。我们使用 Maven Release Plugin使发布(非快照)的制作成为单击事件。开发人员可以(并且应该)在本地使用 SNAPSHOT 相互引用,但将远程存储库完全排除在外。

    关于maven - 哪个 jar 最终出现在 Maven 增量构建的类路径上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7662009/

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