Maven依赖树和pom依赖

问题描述 投票:0回答:1

我想知道以下 jar 的所有传递依赖项:

<dependency>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>xmlbeans-maven-plugin</artifactId>
    <version>2.3.3</version>
</dependency>

将经典命令移至项目的 pom.xml 中定义该依赖项并输入:

mvn dependency:tree

会显示:

+- org.codehaus.mojo:xmlbeans-maven-plugin:jar:2.3.3:compile
|  +- xml-resolver:xml-resolver:jar:1.2:compile
|  +- org.apache.maven:maven-model:jar:2.0.6:compile
|  +- org.apache.maven:maven-artifact:jar:2.0.6:compile
|  +- org.apache.maven:maven-project:jar:2.0.6:compile
|  |  +- org.apache.maven:maven-settings:jar:2.0.6:compile
|  |  +- org.apache.maven:maven-profile:jar:2.0.6:compile
|  |  +- org.apache.maven:maven-artifact-manager:jar:2.0.6:compile
|  |  |  +- org.apache.maven:maven-repository-metadata:jar:2.0.6:compile
|  |  |  \- org.apache.maven.wagon:wagon-provider-api:jar:1.0-beta-2:compile
|  |  +- org.apache.maven:maven-plugin-registry:jar:2.0.6:compile
|  |  \- org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1:compile
|  |     +- junit:junit:jar:3.8.1:compile
|  |     \- classworlds:classworlds:jar:1.1-alpha-2:compile
|  +- org.apache.maven:maven-plugin-api:jar:2.0.6:compile
|  +- org.apache.xmlbeans:xmlbeans:jar:2.4.0:compile
|  |  \- stax:stax-api:jar:1.0.1:compile
|  \- org.codehaus.plexus:plexus-utils:jar:1.5.6:compile

我没有看到 mojo-parent:

  <groupId>org.codehaus.mojo</groupId>
  <artifactId>mojo-parent</artifactId>
  <version>21</version>
  <packaging>pom</packaging>

乍一看似乎mvn命令可以显示非pom类型的依赖关系。

有没有办法准确显示使 jar 保持活动所需的每个文件?

谢谢!

java maven
1个回答
4
投票

实际上很难显示“让 jar 保持活动”所需的文件。您的项目可能有一些隐式依赖项。

您可以运行

mvn dependency:analyze
,它应该会显示未使用的依赖项。 但您已经意识到其中哪些是您可以自由删除的。 http://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html

如果您不希望传递依赖项带来任何意外,我还可以建议您使用 Maven Enforcer。您可以禁止所有未声明的传递依赖项。 http://maven.apache.org/enforcer/enforcer-rules/banTransitiveDependency.html

© www.soinside.com 2019 - 2024. All rights reserved.