You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Maven dependency:tree的-Dexcludes参数无法始终排除指定依赖?

Maven dependency:tree 排除依赖部分失效问题

我想用dependency:tree工具快速查看模块的依赖列表,同时过滤内部、可选依赖及其传递依赖,执行的命令如下:

mvn dependency:tree -Dscope=runtime \
  -Dexcludes={dependencies}

但发现部分指定排除的依赖仍出现在输出结果中,想确认操作是否有误。

以spring-ws 4.0.11版本的子模块spring-ws-core为例:

未添加排除参数时,能看到jakarta.mail-api和jaxb-runtime依赖:

mvn -o dependency:tree -Dscope=runtime \
  | grep -E '(jakarta.mail-api|jaxb-runtime)'                                    
[INFO] +- org.glassfish.jaxb:jaxb-runtime:jar:4.0.5:runtime
[INFO] +- jakarta.mail:jakarta.mail-api:jar:2.1.3:compile

使用groupId:artifactId格式排除jakarta.mail-api有效:

mvn -o dependency:tree -Dscope=runtime \
  -Dexcludes=jakarta.mail:jakarta.mail-api \
  | grep -E '(jakarta.mail-api|jaxb-runtime)'
[INFO] +- org.glassfish.jaxb:jaxb-runtime:jar:4.0.5:runtime

但用同样格式排除jaxb-runtime却无效:

mvn -o dependency:tree -Dscope=runtime \
  -Dexcludes=org.glassfish.jaxb:jaxb-runtime \
  | grep -E '(jakarta.mail-api|jaxb-runtime)'
[INFO] +- org.glassfish.jaxb:jaxb-runtime:jar:4.0.5:runtime
[INFO] +- jakarta.mail:jakarta.mail-api:jar:2.1.3:compile

同时排除两者时,也仅jakarta.mail-api被过滤:

mvn -o dependency:tree -Dscope=runtime \
  -Dexcludes=jakarta.mail:jakarta.mail-api,org.glassfish.jaxb:jaxb-runtime \
  | grep -E '(jakarta.mail-api|jaxb-runtime)'
[INFO] +- org.glassfish.jaxb:jaxb-runtime:jar:4.0.5:runtime

目前的问题是部分依赖排除有效、部分无效,找不到规律。用grep -v过滤还会残留传递依赖。

注:无论是使用默认版本(解析为2.8)还是最新的3.8.0版本执行命令:

mvn org.apache.maven.plugins:maven-dependency-plugin:3.8.0:tree ...

结果均一致。


内容的提问来源于stack exchange,提问作者Kariem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 05:42:39