有没有办法为maven输入一个jar名称并获得将其添加到我的项目中的jar的完整路径?
答案 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应该有类似的功能