在maven依赖项中显示省略的版本:树?

时间:2016-02-23 21:50:50

标签: java eclipse maven pom.xml maven-dependency-plugin

在Eclipse中,当我转到Maven Dependency Hierarchy页面时,我得到输出,说明导致版本被忽略的冲突:

eclipse maven version

但是,如果我使用dependency:tree,那就省略了,我只看到实际使用的版本:

|  +- commons-httpclient:commons-httpclient:jar:3.1:compile
|  +- commons-codec:commons-codec:jar:1.4:compile
|  +- commons-io:commons-io:jar:2.4:compile
|  +- commons-net:commons-net:jar:3.1:compile
|  +- javax.servlet:servlet-api:jar:2.5:compile

后来实际引用的版本......

+- commons-collections:commons-collections:jar:3.1:compile

有没有办法获得依赖:树输出为冲突省略的版本?

谢谢!

3 个答案:

答案 0 :(得分:12)

是的,您可以通过将verbose属性设置为true来获取省略的工件:

  

是否在序列化依赖关系树中包含省略的节点。

此属性默认为false。在命令行上,您将有

mvn dependency:tree -Dverbose=true

答案 1 :(得分:0)

根据this,在插件的3.0版及更高版本中,-Dverbose=true参数将被忽略。您需要使用旧版本;上面的链接建议以下内容(对我有用):

mvn org.apache.maven.plugins:maven-dependency-plugin:2.10:tree -Dverbose=true

答案 2 :(得分:0)

我建议使用 depgraph-maven-plugin

  • 要查看所有依赖项,请将 showDuplicates 设置为 true
    • 这将包括 dependency:tree 将与 verbose 选项一起显示的依赖项
  • 要查看冲突,请将 showConflicts 设置为 true
  • 有各种过滤器来包含/排除项目
  • 可以导出为各种格式,包括可以用GraphViz渲染的点文件

示例配置:

<plugin>
    <groupId>com.github.ferstl</groupId>
    <artifactId>depgraph-maven-plugin</artifactId>
    <version>3.3.0</version>
    <configuration>
        <showDuplicates>true</showDuplicates>
        <showConflicts>true</showConflicts>
        <includes>
            <!-- groupId:artifactId:type:classifier -->
            <include>com.mycompany*:*</include>
        </includes>
    </configuration>
</plugin>

然后在您的项目中运行 mvn depgraph:graph 以在 target/dependency-graph.dot 中查找新文件。

请注意,您可以包含范围为 provided 的插件,这样它就不会包含在任何构建工件中。