如何列出Maven包所有作用域依赖 解决dependency:tree漏列问题
Maven 不受scope限制列出全量依赖的方法
之前操作不生效是两个原因导致:一是参数使用错误,二是Maven默认依赖传递规则限制,按以下步骤操作即可拿到完整依赖列表:
- 规则说明
- Maven 原生依赖传递逻辑中,
provided、test范围的依赖默认不会传递到下游项目,在本地项目引入guava后直接执行依赖树命令,默认不会解析guava自身声明的provided范围依赖 -Dinclude参数的作用是匹配依赖坐标做结果筛选,不是scope过滤参数,传入provided仅会匹配坐标中带provided字符串的依赖,无法实现scope过滤效果
- Maven 原生依赖传递逻辑中,
- 直接解析指定第三方包全量依赖的命令(无需在本地项目中引入目标包):
mvn dependency:tree -Dartifact=com.google.guava:guava:14.0.1 -Dscope=all
参数-Dscope=all会指定插件解析所有范围的依赖,覆盖compile、provided、test、runtime、system全scope,无需单独指定某类scope。
- 如果需要连依赖仲裁时被省略、版本冲突被排除的依赖也全部输出,用于和effective pom解析结果做全量比对,可以增加verbose参数:
mvn dependency:tree -Dartifact=com.google.guava:guava:14.0.1 -Dscope=all -Dverbose
执行命令后输出的结果会包含该包所有声明的依赖,可直接用于校验自建依赖图谱的准确性。
内容的提问来源于stack exchange,提问作者Denxah129
相关产品推荐
相关产品推荐

