Maven依赖项:树未显示所有传递依赖项

时间:2020-03-17 07:27:16

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

我试图通过maven dependency:tree解析一些依赖树,并发现了一些有趣的情况:

我制作了pom.xml来安装org.glassfish.jersey.containers:jersey-container-servlet:2.19,下面是内容:

<project> 
  <modelVersion>4.0.0</modelVersion> 
  <groupId> fake_id </groupId> 
  <artifactId> fake_id </artifactId> 
  <version>1.0.0</version> 
  <dependencies> 
    <dependency> 
      <groupId>org.glassfish.jersey.containers</groupId> 
      <artifactId>jersey-container-servlet</artifactId> 
      <version>2.19</version> 
    </dependency> 
  </dependencies> 
</project>

在安装此软件包之前,我删除了/home/${user}/.m2/repository中的所有文件夹,以防结果受到现有环境的影响。 然后运行mvn dependency:tree -Dverbose,得到以下依赖树:

fake_id:fake_id:jar:1.0.0
[INFO] \- org.glassfish.jersey.containers:jersey-container-servlet:jar:2.19:compile
[INFO]    +- org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.19:compile
[INFO]    |  +- org.glassfish.hk2.external:javax.inject:jar:2.4.0-b25:compile
[INFO]    |  +- (org.glassfish.jersey.core:jersey-common:jar:2.19:compile - omitted for duplicate)
[INFO]    |  +- (org.glassfish.jersey.core:jersey-server:jar:2.19:compile - omitted for duplicate)
[INFO]    |  \- (javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile - omitted for duplicate)
[INFO]    +- org.glassfish.jersey.core:jersey-common:jar:2.19:compile
[INFO]    |  +- (javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile - omitted for duplicate)
[INFO]    |  +- javax.annotation:javax.annotation-api:jar:1.2:compile
[INFO]    |  +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.19:compile
[INFO]    |  +- org.glassfish.hk2:hk2-api:jar:2.4.0-b25:compile
[INFO]    |  |  +- org.glassfish.hk2:hk2-utils:jar:2.4.0-b25:compile
[INFO]    |  |  \- org.glassfish.hk2.external:aopalliance-repackaged:jar:2.4.0-b25:compile
[INFO]    |  +- (org.glassfish.hk2.external:javax.inject:jar:2.4.0-b25:compile - omitted for duplicate)
[INFO]    |  +- org.glassfish.hk2:hk2-locator:jar:2.4.0-b25:compile
[INFO]    |  |  +- (org.glassfish.hk2.external:javax.inject:jar:2.4.0-b25:compile - omitted for duplicate)
[INFO]    |  |  +- (org.glassfish.hk2.external:aopalliance-repackaged:jar:2.4.0-b25:compile - omitted for duplicate)
[INFO]    |  |  +- (org.glassfish.hk2:hk2-api:jar:2.4.0-b25:compile - omitted for duplicate)
[INFO]    |  |  +- (org.glassfish.hk2:hk2-utils:jar:2.4.0-b25:compile - omitted for duplicate)
[INFO]    |  |  \- org.javassist:javassist:jar:3.18.1-GA:compile
[INFO]    |  \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile
[INFO]    +- org.glassfish.jersey.core:jersey-server:jar:2.19:compile
[INFO]    |  +- (org.glassfish.jersey.core:jersey-common:jar:2.19:compile - omitted for duplicate)
[INFO]    |  +- org.glassfish.jersey.core:jersey-client:jar:2.19:compile
[INFO]    |  |  +- (javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile - omitted for duplicate)
[INFO]    |  |  +- (org.glassfish.jersey.core:jersey-common:jar:2.19:compile - omitted for duplicate)
[INFO]    |  |  +- (org.glassfish.hk2:hk2-api:jar:2.4.0-b25:compile - omitted for duplicate)
[INFO]    |  |  +- (org.glassfish.hk2.external:javax.inject:jar:2.4.0-b25:compile - omitted for duplicate)
[INFO]    |  |  \- (org.glassfish.hk2:hk2-locator:jar:2.4.0-b25:compile - omitted for duplicate)
[INFO]    |  +- (javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile - omitted for duplicate)
[INFO]    |  +- org.glassfish.jersey.media:jersey-media-jaxb:jar:2.19:compile
[INFO]    |  |  +- (org.glassfish.jersey.core:jersey-common:jar:2.19:compile - omitted for duplicate)
[INFO]    |  |  +- (org.glassfish.hk2:hk2-api:jar:2.4.0-b25:compile - omitted for duplicate)
[INFO]    |  |  +- (org.glassfish.hk2.external:javax.inject:jar:2.4.0-b25:compile - omitted for duplicate)
[INFO]    |  |  +- (org.glassfish.hk2:hk2-locator:jar:2.4.0-b25:compile - omitted for duplicate)
[INFO]    |  |  \- (org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile - omitted for duplicate)
[INFO]    |  +- (javax.annotation:javax.annotation-api:jar:1.2:compile - omitted for duplicate)
[INFO]    |  +- (org.glassfish.hk2:hk2-api:jar:2.4.0-b25:compile - omitted for duplicate)
[INFO]    |  +- (org.glassfish.hk2.external:javax.inject:jar:2.4.0-b25:compile - omitted for duplicate)
[INFO]    |  +- (org.glassfish.hk2:hk2-locator:jar:2.4.0-b25:compile - omitted for duplicate)
[INFO]    |  \- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO]    \- javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile

但是,org.glassfish.hk2:hk2-api:2.4.0-b25org.glassfish.hk2:hk2-utils:2.4.0-b25都直接依赖于javax.inject:javex.inject,但是javax.inject:javex.inject并未显示在输出依赖树中。两个pom.xml中的“ Dependency”部分如下所示:

...
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
</dependency>
...

要验证javax.inject:javax.inject是否是树中的真实依赖项,我以防万一的方式删除了/home/${user}/.m2/javax/inject文件夹,然后再次运行mvn dependency:tree -Dverbose,发现它确实已经下载了{{1 }},这是日志。

javax.inject:javax.inject:1

据我了解,我没有发现对[INFO] Building fake_id 1.0.0 [INFO] ------------------------------------------------------------------------ Downloading: https://repo.maven.apache.org/maven2/javax/inject/javax.inject/1/javax.inject-1.pom Downloaded: https://repo.maven.apache.org/maven2/javax/inject/javax.inject/1/javax.inject-1.pom (612 B at 0.5 KB/sec) [INFO] [INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ fake_id --- [INFO] fake_id:fake_id:jar:1.0.0 [INFO] \- org.glassfish.jersey.containers:jersey-container-servlet:jar:2.19:compile [INFO] +- org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.19:compile [INFO] | +- org.glassfish.hk2.external:javax.inject:jar:2.4.0-b25:compile [INFO] | +- (org.glassfish.jersey.core:jersey-common:jar:2.19:compile - omitted for duplicate) [INFO] | +- (org.glassfish.jersey.core:jersey-server:jar:2.19:compile - omitted for duplicate) [INFO] | \- (javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile - omitted for duplicate) [INFO] +- org.glassfish.jersey.core:jersey-common:jar:2.19:compile [INFO] | +- (javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile - omitted for duplicate) [INFO] | +- javax.annotation:javax.annotation-api:jar:1.2:compile [INFO] | +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.19:compile [INFO] | +- org.glassfish.hk2:hk2-api:jar:2.4.0-b25:compile [INFO] | | +- org.glassfish.hk2:hk2-utils:jar:2.4.0-b25:compile [INFO] | | \- org.glassfish.hk2.external:aopalliance-repackaged:jar:2.4.0-b25:compile [INFO] | +- (org.glassfish.hk2.external:javax.inject:jar:2.4.0-b25:compile - omitted for duplicate) [INFO] | +- org.glassfish.hk2:hk2-locator:jar:2.4.0-b25:compile [INFO] | | +- (org.glassfish.hk2.external:javax.inject:jar:2.4.0-b25:compile - omitted for duplicate) [INFO] | | +- (org.glassfish.hk2.external:aopalliance-repackaged:jar:2.4.0-b25:compile - omitted for duplicate) [INFO] | | +- (org.glassfish.hk2:hk2-api:jar:2.4.0-b25:compile - omitted for duplicate) [INFO] | | +- (org.glassfish.hk2:hk2-utils:jar:2.4.0-b25:compile - omitted for duplicate) [INFO] | | \- org.javassist:javassist:jar:3.18.1-GA:compile [INFO] | \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile [INFO] +- org.glassfish.jersey.core:jersey-server:jar:2.19:compile [INFO] | +- (org.glassfish.jersey.core:jersey-common:jar:2.19:compile - omitted for duplicate) [INFO] | +- org.glassfish.jersey.core:jersey-client:jar:2.19:compile [INFO] | | +- (javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile - omitted for duplicate) [INFO] | | +- (org.glassfish.jersey.core:jersey-common:jar:2.19:compile - omitted for duplicate) [INFO] | | +- (org.glassfish.hk2:hk2-api:jar:2.4.0-b25:compile - omitted for duplicate) [INFO] | | +- (org.glassfish.hk2.external:javax.inject:jar:2.4.0-b25:compile - omitted for duplicate) [INFO] | | \- (org.glassfish.hk2:hk2-locator:jar:2.4.0-b25:compile - omitted for duplicate) [INFO] | +- (javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile - omitted for duplicate) [INFO] | +- org.glassfish.jersey.media:jersey-media-jaxb:jar:2.19:compile [INFO] | | +- (org.glassfish.jersey.core:jersey-common:jar:2.19:compile - omitted for duplicate) [INFO] | | +- (org.glassfish.hk2:hk2-api:jar:2.4.0-b25:compile - omitted for duplicate) [INFO] | | +- (org.glassfish.hk2.external:javax.inject:jar:2.4.0-b25:compile - omitted for duplicate) [INFO] | | +- (org.glassfish.hk2:hk2-locator:jar:2.4.0-b25:compile - omitted for duplicate) [INFO] | | \- (org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile - omitted for duplicate) [INFO] | +- (javax.annotation:javax.annotation-api:jar:1.2:compile - omitted for duplicate) [INFO] | +- (org.glassfish.hk2:hk2-api:jar:2.4.0-b25:compile - omitted for duplicate) [INFO] | +- (org.glassfish.hk2.external:javax.inject:jar:2.4.0-b25:compile - omitted for duplicate) [INFO] | +- (org.glassfish.hk2:hk2-locator:jar:2.4.0-b25:compile - omitted for duplicate) [INFO] | \- javax.validation:validation-api:jar:1.1.0.Final:compile [INFO] \- javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.439 s [INFO] Finished at: 2020-03-17T14:58:44+08:00 [INFO] Final Memory: 20M/596M 有任何其他限制(例如排除,选择等)。 所以我想问的是为什么javax.inject:javax.inject会忽略javax.inject:javax.inject,这是我可以在依赖树中获取此包的任何解决方案吗?

感谢您的时间和亲切的答复!

要弥补结果 mvn dependency:tree

-Dverbose

1 个答案:

答案 0 :(得分:0)

verbose选项的说明为(https://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html):

是否在序列化依赖关系树中包括省略的节点。注意,此功能实际上使用了Maven 2算法,与Maven 3一起使用时可能会给出错误的结果。