gpt4 book ai didi

java - 为什么 Maven 覆盖范围不能被传递地识别?

转载 作者:行者123 更新时间:2023-12-02 01:50:35 25 4
gpt4 key购买 nike

这是我没想到的 Maven 中一个有趣的情况。也许有人可以准确解释为什么会发生这种情况。

我有一个父 POM foobar-parent声明logback-classictest范围在 <dependencyManagement>部分。

我有一个单独的项目项目example有自己的example-parent ,继承自foobar-parent并且还充当其子模块的父模块。

一个子模块 example-foo覆盖依赖项 logback-classic并给出 compile范围:

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

最后我还有另一个子模块example-bar它使用 example-foo作为依赖项。

奇怪的是,对于 example-bar 的有效 POM ,它表明 logback-classictest范围!!自 example-foo声明logback-classiccompile范围(意味着编译时需要它),并且从 example-bar 开始编译时依赖于 example-foo ,我预计example-bar引入logback-classic作为传递依赖。

我对此的解释是 test <dependencyManagement> 中指定的范围父 POM 的管理部分将覆盖 compile 的传递依赖关系的范围。范围!!这是正确的解释吗?这就是 Maven 应该如何工作的吗?

最佳答案

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

关于java - 为什么 Maven 覆盖范围不能被传递地识别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53034871/

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