在Maven中,这是一种我没想到的有趣的状态。也许有人能解释清楚为什么会发生这种事。
我有一个父POM foobar-parent,它在logback-classic部分中声明了带有test作用域的test。
我有一个单独的项目项目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-classic具有test范围!!由于example-foo将logback-classic声明为compile作用域(意味着在编译时需要它),而且由于example-bar对example-foo具有编译时依赖关系,所以我希望example-bar将logback-classic作为一个传递依赖项引入。
我的解释是,在父POM的test管理部分中指定的<dependencyManagement>作用域将覆盖来自compile作用域的传递依赖关系的范围!!这是正确的解释吗,Maven应该是这样工作的吗?
发布于 2018-10-28 18:59:26
您说得对:“对于传递依赖项,依赖关系管理优先于依赖中介”(取自依赖机制简介)。
https://stackoverflow.com/questions/53034871
复制相似问题