【问题标题】:Maven unique snapshots and dependency convergenceMaven独特的快照和依赖收敛
【发布时间】:2011-12-28 22:44:53
【问题描述】:

我有一个项目,其中 maven-enforcer 规则因使用非唯一快照(令人讨厌的是 Maven 3 中支持的唯一一种快照)的多模块构建而失败。

例如,假设 -> 是“依赖”关系,并且:

  1. 模块-A -> 模块-B -> 模块-C
  2. 模块-A -> 模块-C

并且模块 B 和模块 C 作为唯一构建存在于快照存储库中。 POM 中所有声明的模块版本目前都是 1.0-SNAPSHOT。

现在,构建模块 A 失败:

mvn -pl Module-A install

结果:

[INFO] --- maven-enforcer-plugin:1.0.1:enforce (enforce) @ Module-A ---
[ERROR] 
Dependency convergence error for com.vivosys.project:Module-C:1.0-SNAPSHOT paths to dependency are:
+-com.vivosys.project:Module-A:1.0-SNAPSHOT
  +-com.vivosys.project:Module-B:1.0-20111228.032527-8
    +-com.vivosys.project:Module-C:1.0-SNAPSHOT
and
+-com.vivosys.project:Module-A:1.0-SNAPSHOT
  +-com.vivosys.project:Module-C:1.0-20111228.032527-6

传递依赖被解析为非唯一快照构建,但直接依赖被解析为唯一快照构建。

我正在使用 maven 3.0.3,maven-enforcer 1.0.1。存储库是使用唯一快照选项的 Artifactory 2.4.2(Artifactory 建议,因为 Maven 3 不再支持非唯一快照)。

解决方案?

更新:看起来工件允许覆盖 Maven 客户端行为并将非唯一快照存储在存储库中。但是,由于某种原因,Artifactory 不推荐这样做(请参阅 http://wiki.jfrog.org/confluence/display/RTF/Local+Repositories 上的“Maven 3”简介),因此仍然欢迎使用其他解决方案。

【问题讨论】:

    标签: maven artifactory maven-enforcer-plugin


    【解决方案1】:

    此错误已在 1.1 版中修复 (MENFORCER-118) 和 released

    【讨论】:

      【解决方案2】:

      您遇到了this 强制插件错误(作为增强提出)。

      也许,严格来说,作为一种解决方法,您可以将传递依赖项 C 显式声明为 A 的依赖项?

      【讨论】:

      • 感谢错误报告的链接。请注意,模块 B 和 C 都已显式声明为 A 的依赖项。这实际上是导致收敛失败的原因。
      【解决方案3】:

      在解决MENFORCER-118 之前,唯一可用的解决方案似乎是将存储库服务器配置为使用非唯一快照。在 Artifactory 中,这可以通过:Admin, Repositories 完成,选择快照存储库并选择 Edit。然后选择Maven Snapshot Version Behavior下的Nonunique

      【讨论】:

        猜你喜欢
        • 2012-01-19
        • 2023-03-31
        • 2021-02-16
        • 1970-01-01
        • 2021-10-29
        • 1970-01-01
        • 2015-09-19
        • 1970-01-01
        • 2014-11-16
        相关资源
        最近更新 更多