传递依赖如何工作于二级依赖

时间:2019-06-21 10:14:11

标签: maven transitive-dependency

我有以下依赖关系树。

[INFO] +- net.sf.jasperreports:jasperreports:jar:6.5.1:compile
[INFO] |  +- org.eclipse.jdt.core.compiler:ecj:jar:4.4.2:compile
[INFO] |  +- org.codehaus.castor:castor-xml:jar:1.3.3:compile
[INFO] |  |  +- org.codehaus.castor:castor-core:jar:1.3.3:compile
[INFO] |  |  +- commons-lang:commons-lang:jar:2.6:compile

当我在pom文件中将依赖项“ commons-lang”添加为顶级依赖项时,即使没有将其从pom文件中排除,它也会自动删除common-lang的传递性依赖项。

[INFO] +- net.sf.jasperreports:jasperreports:jar:6.5.1:compile
[INFO] |  +- org.eclipse.jdt.core.compiler:ecj:jar:4.4.2:compile
[INFO] |  +- org.codehaus.castor:castor-xml:jar:1.3.3:compile
[INFO] |  |  +- org.codehaus.castor:castor-core:jar:1.3.3:compile
[INFO] |  |  +- javax.inject:javax.inject:jar:1:compile

可以预料的是,当我们从jasperreports中排除它时,它应该排除公共语言。

2 个答案:

答案 0 :(得分:0)

在您的项目中声明依赖项时,pom maven将使用该声明代替传递依赖项。

忽略的依赖项未显示在maven依赖项树中,我刚刚了解到,由于maven-dependency-plugin 3.0版已不再支持详细选项-这将显示省略的依赖项。

当我尝试在maven命令行中提供-Dverbose选项时(对于“ mvn依赖项:tree -Dverbose = true”),我看到了这一点:

 Verbose not supported since maven-dependency-plugin 3.0

查看对Display omitted versions in maven dependency:tree?中答案的评论

答案 1 :(得分:0)

依赖性中介是您正在谈论的规则。这是行家管理传递依赖项的规则之一。

它将根据pom中最接近的定义将commons-lang放入依赖关系树中。

您可以在这里阅读所有规则:
https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

所以要引用它们:

  

依赖关系中介-确定遇到多个版本作为依赖项时,将选择工件的哪个版本。 Maven选择了“最近的定义”。也就是说,它使用依赖关系树中最接近您的项目的版本。您始终可以通过在项目的POM中明确声明版本来保证版本。

并且从不删除commons-lang的依赖关系,它在传递树中的位置已更改。现在它已成为1级依赖项。

[INFO] +- commons-lang:commons-lang:jar:2.6:compile
[INFO] \- net.sf.jasperreports:jasperreports:jar:6.5.1:compile
[INFO]    +- org.eclipse.jdt.core.compiler:ecj:jar:4.4.2:compile
[INFO]    +- org.codehaus.castor:castor-xml:jar:1.3.3:compile
[INFO]    |  +- org.codehaus.castor:castor-core:jar:1.3.3:compile
[INFO]    |  +- javax.inject:javax.inject:jar:1:compile
[INFO]    |  +- stax:stax:jar:1.2.0:compile
[INFO]    |  |  \- stax:stax-api:jar:1.0.1:compile
[INFO]    |  \- javax.xml.stream:stax-api:jar:1.0-2:compile
[INFO]    +- com.fasterxml.jackson.core:jackson-core:jar:2.1.4:compile
相关问题