提供未列出的传递依赖项

时间:2014-06-10 11:40:36

标签: maven maven-3 maven-dependency-plugin

我有2个项目,当我列出第一个我得到的依赖项时:

[INFO] com.onespatial.gothic:gothic-java:jar:5.16
[INFO] +- com.onespatial.tools.gde:gde-cfg:zip:5.16:provided
[INFO] +- com.onespatial.gothic:gothic-w32:jar:5.16:compile
[INFO] \- com.onespatial.gothic:gothic-lx86_64:jar:5.16:compile

这是正确的。 gde-cfg 提供。但是当我列出第二个项目的依赖项时,包括上面的项目,我得到:

[INFO] +- com.onespatial.radius.studio:rswebmapservice:jar:classes:2.3.4-build-7-SNAPSHOT:compile
[INFO] |  +- com.onespatial.gothic:gothic-java:jar:5.16:compile
[INFO] |  +- com.onespatial.gothic:gothic-lx86_64:jar:5.16:compile
[INFO] |  +- com.onespatial.gothic:gothic-w32:jar:5.16:compile

gothic-java 的传递依赖性没有出现在树中(或者当我使用dependency:list时)。任何人都可以解释为什么gde-cfg没有列在上面。

1 个答案:

答案 0 :(得分:0)

here中所述,传递提供的依赖关系不会添加到依赖关系树中。从2006年开始有Maven docs,自那以后没有任何进展。

您应该声明在项目中使用的所有依赖项,因为如果您使用的是gde-cfg中的类,则应在依赖项中声明它,与是否存在对它的传递依赖无关

我能想到的唯一情况是,如果你没有实际使用gde-cfg中的任何类,那么依赖是必要的,如果你是从gothic-java扩展一个类/接口,这个类/接口扩展了来自gde-cfg的类/接口。在这种情况下,类/接口必须在编译时出现,而不是Maven当前的行为。解决方法是手动将提供的依赖项添加到项目的gde-cfg。