如何dependency:tree 对特定神器?

How to dependency:tree on a specific artifact?

标题说明了一切。给定一个依赖项,我怎样才能得到它的依赖项树?

假设我想定位 org.hibernate:hibernate-core:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.4.24.Final</version>
</dependency>

结果我想要:

[INFO] |  \- org.hibernate:hibernate-core:jar:5.4.24.Final:compile
[INFO] |     +- org.jboss.logging:jboss-logging:jar:3.4.1.Final:compile
[INFO] |     +- javax.persistence:javax.persistence-api:jar:2.2:compile
[INFO] |     +- net.bytebuddy:byte-buddy:jar:1.10.17:compile
[INFO] |     +- antlr:antlr:jar:2.7.7:compile
[INFO] |     +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.1.1.Final:compile
[INFO] |     +- org.jboss:jandex:jar:2.1.3.Final:compile
[INFO] |     +- com.fasterxml:classmate:jar:1.5.1:compile
[INFO] |     +- javax.activation:javax.activation-api:jar:1.2.0:compile
[INFO] |     +- org.dom4j:dom4j:jar:2.1.3:compile
[INFO] |     \- org.hibernate.common:hibernate-commons-annotations:jar:5.1.2.Final:compile

我试过了:

mvn dependency:tree -DgroupId=org.hibernate -DartifactId=hibernate-core -Dversion=5.4.24.Final

但是不行。

:tree:list 无所谓。我想要的只是我项目中依赖项的依赖项。

如果我 mvn dependency:tree -Dincludes=org.hibernate:hibernate-core 我得到:

[INFO]    \- org.hibernate:hibernate-core:jar:5.4.24.Final:compile

及其依赖项丢失。

this online "tool" 完全符合我的要求。是否可以使用 mvn 命令来完成?

你得到的是预期。

当使用 includes 用户 属性 时,例如:-Dincludes=org.hibernate:hibernate-core,输出显示 org.hibernate:hibernate-core 依赖关系 拉那个.
您想要相反的情况:显示 org.hibernate:hibernate-core.
拉取的依赖项 要实现这一点:您需要执行 mvn dependency:tree 因为 org.hibernate:hibernate-core POM.
因此,您应该使用 shell 进入本地存储库并执行该命令。 但这很麻烦:IDE Eclipse 和 IntelliJ 提供的 Maven 插件做得很好。

带有 m2e Eclipse 插件的示例。
在您的 pom.xml 的 m2 视图中,双击您要开发的依赖项。

完成了:

如果合适,Maven 的替代方法是通过将 pom 指定为分类器来使用 dependency:copy 目标:

 #retrieve and store the hibernate pom 
mvn dependency:copy  -Dartifact=org.hibernate:hibernate-core:5.2.14.final:pom

#see the dependencty tree on the hibernate  pom
mvn -f target/dependency/hibernate-core-5.2.14.final.pom dependency:tree

两个注意事项:

  • 即使工件在您的本地存储库中(在这种情况下首先安装工件),它也能正常工作。
  • 您可以使用 -DoutputDirectory=. 标志将当前目录指定为输出目录,而不是默认路径 target/dependency