【发布时间】:2013-12-22 12:28:32
【问题描述】:
当我有一个包含 POM 的项目时,例如像这样:
<dependency>
<groupId>org.jboss.arquillian</groupId
<artifactId>arquillian-bom</artifactId
<version>1.1.2.Final</version>
<type>pom</type
<scope>test</scope>
</dependency>
那么 POM 就真正下载到了我的本地存储库中。并且 POM 包含一个依赖项列表(我可以在我的本地 repo 中检查 POM 文件,有dependenManagement 标签,并在下面列出了很多依赖项,例如 arquillian-config-api、shrinkwrap-descriptors-bom 等。 .),但这些依赖项未在 mvn dependency:tree 中列出。依赖树如下所示:
...
\- org.jboss.arquillian:arquillian-bom:pom:1.1.2.Final:test
(no more lines below it)
...
但实际上我希望 Maven 将这些依赖项显示为传递依赖项。当依赖的类型是 JAR 类型时,传递的依赖就真正显示出来了。
不知何故,我想我在使用 Maven 时不明白“pom”类型的含义是什么。
直到现在,我认为它只是意味着它不是一个工件,它只是一个插入到引用它的 POM 中的 POM。所以当我包含一个POM类型依赖的时候,POM类型依赖的依赖就包含进来了。
但似乎我弄错了,互联网上的 Maven 文档并没有帮助我解决这个问题。
有什么想法吗?
【问题讨论】:
-
这个答案应该对你有所帮助:stackoverflow.com/a/11779302/1570834。基本上,在dependencyManagement 部分中定义的依赖项是托管依赖项,它们不包含传递性。如果 arquillian-bom 定义了
dependencies部分,您只会看到dependency:tree输出中列出的依赖项 - 但它没有,因此您看不到任何传递依赖项。