我怎么知道为什么某个Jar被添加到我的项目中?

时间:2018-03-17 11:08:06

标签: java maven

有没有办法为maven输入一个jar名称并获得将其添加到我的项目中的jar的完整路径?

2 个答案:

答案 0 :(得分:5)

您可以做的最好的事情是使用mvn dependency:tree command 它没有显示拉动依赖关系的罐子的完整路径 相反,它显示当前Maven项目的依赖关系树。 您可以知道每个已解析的依赖关系Maven模块/依赖关系。

使trio groupId-artifactId-version标识的依赖关系与本地存储库之间的映射非常简单。

以下是一个项目示例,其中包含jmh作为依赖项:

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ map-benchmark ---
[INFO] davidxxx:map-benchmark:jar:1.0
[INFO] +- junit:junit:jar:4.7:test
[INFO] +- org.openjdk.jmh:jmh-core:jar:1.19:compile
[INFO] |  +- net.sf.jopt-simple:jopt-simple:jar:4.6:compile
[INFO] |  \- org.apache.commons:commons-math3:jar:3.2:compile
[INFO] \- org.openjdk.jmh:jmh-generator-annprocess:jar:1.19:compile

例如,您可以看到junit不是当前项目本身拉动的传递依赖。
但是你也可以看到commons-math3是由jopt-simple拉动的jmh-core拉动的传递依赖。

dependency:tree目标也可用于仅过滤特定的依赖关系。

mvn dependency:tree -Dincludes=org.apache.commons:commons-math3

或(如果我们不需要指定groupId,请注意:没有前缀):

mvn dependency:tree -Dincludes=:commons-math3

将输出:


[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ map-benchmark ---
[INFO] davidxxx:map-benchmark:jar:1.0
[INFO] \- org.openjdk.jmh:jmh-core:jar:1.19:compile
[INFO]    \- org.apache.commons:commons-math3:jar:3.2:compile
[INFO] ------------------------------------------------------------------------

此插件可以help to solve conflicts 以下是文档中的相关示例。

例如,找出为什么使用Commons Collections 2.0 Maven Dependency Plugin,我们可以执行以下操作 项目目录:

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

答案 1 :(得分:2)

检查

https://maven.apache.org/plugins/maven-dependency-plugin/examples/filtering-the-dependency-tree.html

您可以使用此maven命令搜索特定工件:

mvn dependency:tree -Dincludes=DESIRED-groupId:DESIRED-artifactId

此外,如果你使用eclipse和m2eclipse插件(http://m2eclipse.sonatype.org),那么有一个依赖树的图形版本,它将帮助你通过jar名称过滤它。请参阅:https://books.sonatype.com/m2eclipse-book/reference/dependencies-sect-analyze-depend.html

其他IDE应该有类似的功能