代码之家  ›  专栏  ›  技术社区  ›  Garret Wilson

为什么Maven重写的作用域不能被传递地识别?

  •  0
  • Garret Wilson  · 技术社区  · 7 年前

    我有个爸爸妈妈 foobar-parent logback-classic 用一个 test 中的范围 <dependencyManagement> 部分。

    我有一个单独的项目 example example-parent 并且还充当其子模块的父级。

    一个子模块 example-foo 覆盖依赖项 经典logback 并且给了它 compile

    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <scope>compile</scope>
    </dependency>
    

    最后还有一个子模块 example-bar 它使用 示例foo 作为一种依赖。

    奇怪的是 示例栏 ,它表明 范围!!自 示例foo 声明 属于 作用域(意味着编译时需要它),以及 示例栏 示例foo ,我预料到了 引进 经典logback 作为可传递的依赖项。

    我的解释是 测试 中指定的范围 < 父POM的management部分将覆盖 编译 范围!!这是正确的解释吗?Maven应该是这样工作的吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   user10527814 user10527814    7 年前

    您是对的:“对于可传递的依赖项,依赖项管理优先于依赖项中介”(摘自 Introduction to the Dependency Mechanism