过滤依赖树

可以过滤项目的依赖关系树以定位特定的依赖关系。例如,要找出 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