过滤依赖树
可以过滤项目的依赖关系树以定位特定的依赖关系。例如,要找出 Maven 依赖插件使用 Velocity 的原因,我们可以在项目目录中执行以下命令:
mvn dependency:tree -Dincludes=velocity:velocity
哪个输出:
[INFO] [dependency:tree] [INFO] org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT [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] \- velocity:velocity:jar:1.4:compile
因此,我们可以看到 Velocity 是由 Plexus Velocity 引入的,而 Plexus Velocity 又是通过直接依赖 Doxia Site Renderer 引入的。
过滤模式语法
过滤器模式的语法如下:
[groupId]:[artifactId]:[type]:[version]
其中每个模式段都是可选的,并且支持完整和部分*
通配符。空模式段被视为隐式通配符。
例如,org.apache.*
将匹配组 id 以 开头的所有工件org.apache.
,:::*-SNAPSHOT
并将匹配所有快照工件。
从树中排除依赖项
还可以过滤依赖关系树以删除特定的依赖关系。例如,要从树中排除 Plexus 依赖项,我们可以执行以下命令:
mvn dependency:tree -Dexcludes=org.codehaus.plexus
指定多个模式
过滤依赖树时可以指定多个模式,方法是用逗号分隔模式。例如,要从树中排除 Maven 和 Plexus 依赖项,我们可以执行以下操作:
mvn dependency:tree -Dexcludes=org.apache.maven*,org.codehaus.plexus
从树中包含和排除依赖项
包括和排除模式并一起指定以过滤依赖关系树。例如,要在树中定位所有非快照 Plexus 依赖项,我们可以执行以下命令:
mvn dependency:tree -Dincludes=org.codehaus.plexus -Dexcludes=:::*-SNAPSHOT