如何使用Maven获取项目的所有嵌套依赖项?

时间:2015-08-28 20:38:06

标签: java maven

我正在使用一个项目(java),我有一个叫做父pom的pom ......

父母pom打电话给其他poms,他们打电话给其他poms。所以,最后我有一个pom调用其他项目的项目,所以我可以使用它们调用他们的方法和所有(但我不使用。最后,我的项目调用另外20个其他项目与他们自己的poms,方法,服务等...

在所有这些混乱中,我意识到我的项目可能没有使用所有其他项目,所以,我想获得我需要的正确依赖项,从其他项目中取出它们并将它们包含在我的本地项目中。其中一些项目可能会互相调用,造成一些错误。

我以为我已经清理了这个项目,只包括正确的依赖项,但后来我得到了Dependency convergence error

有没有什么方法可以一次跟踪我的项目使用的所有依赖项以及我所包含的项目(嵌套依赖项)使用的依赖项?

由于

2 个答案:

答案 0 :(得分:3)

您是否尝试过maven-dependency-plugin?您将获得按 使用的未声明的依赖项 未使用的声明的依赖项

分组的依赖项列表
  

mvn依赖:分析

或者看看dependencyManagement部分中的不匹配使用:

  

mvn依赖:analyze-dep-mgt

也很有帮助

  

mvn依赖:树

表示完整的依赖关系树。 您有更多选项,请参阅maven-dependency-plugin usage了解详情。

答案 1 :(得分:1)

使用dependency插件:

% mvn dependency:tree -Dverbose -Dincludes=commons-collections
[INFO] [dependency:tree]
[INFO] org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT
[INFO] +- org.apache.maven.reporting:maven-reporting-impl:jar:2.0.4:compile
[INFO] |  \- commons-validator:commons-validator:jar:1.2.0:compile
[INFO] |     \- commons-digester:commons-digester:jar:1.6:compile
[INFO] |        \- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 2.0)
[INFO] \- org.apache.maven.doxia:doxia-site-renderer:jar:1.0-alpha-8:compile
[INFO]    \- org.codehaus.plexus:plexus-velocity:jar:1.1.3:compile
[INFO]       \- commons-collections:commons-collections:jar:2.0:compile

希望有所帮助。