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

如何在Maven中查找依赖的实际生效版本及定义模块?

问题

在使用Maven时,依赖可能来自dependencyManagement(包括import的BOM)等渠道,存在多个版本冲突。当前avatica-core实际生效版本为3.19.6,但该依赖自身定义的版本是3.6.1,如何快速确认3.19.6这个生效版本定义在哪个模块?有没有Maven命令或工具可以查明该版本生效的原因?

已尝试过的命令:
mvn org.apache.maven.plugins:maven-dependency-plugin:2.10:tree -Dverbose=true > maven2.json

解决方案

1. 精准过滤依赖树,聚焦目标依赖

用dependency:tree加上过滤参数,只输出avatica-core的依赖链路,避免冗余信息干扰:

mvn org.apache.maven.plugins:maven-dependency-plugin:3.6.1:tree -Dverbose=true -Dincludes=org.apache.calcite.avatica:avatica-core

输出里会列出该依赖的所有候选版本,以及最终生效版本的胜出原因——比如标注managed from ...说明版本来自dependencyManagement,或者omitted for conflict with 3.19.6显示版本冲突后的仲裁结果。

2. 生成生效POM,定位dependencyManagement来源

如果版本是由dependencyManagement(含导入的BOM)管控的,直接生成生效的全量POM文件:

mvn org.apache.maven.plugins:maven-help-plugin:3.4.0:effective-pom > effective-pom.xml

打开生成的effective-pom.xml,搜索avatica-core,就能找到管控该版本的dependencyManagement节点,同时能看到对应的父POM或导入BOM的来源。

3. 查看版本仲裁的完整细节

用dependency:resolve命令获取版本选择的完整决策过程:

mvn org.apache.maven.plugins:maven-dependency-plugin:3.6.1:resolve -Dverbose=true -Dincludes=org.apache.calcite.avatica:avatica-core

输出会明确标注每个版本的来源路径,以及Maven选择3.19.6的具体规则(比如依赖路径最短、dependencyManagement优先级更高等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:02:12