如何查找Maven中间接引入mongodb-driver的依赖并升级版本
异常根因说明
这个报错是因为mongodb-driver从3.5版本开始重构了连接池配置API,移除了原有的ConnectionPoolSettings$Builder.maxWaitQueueSize(int)方法,项目中引入的3.2.2版本和上层依赖要求的高版本API不匹配导致的。
定位间接引入低版本mongodb-driver的方法
- 命令行查询:在项目根目录执行Maven命令
mvn dependency:tree -Dincludes=org.mongodb:mongodb-driver,输出结果会以树形结构展示该依赖的完整引入路径,直接就能看到是哪个上游依赖间接引入了低版本的mongodb-driver。 - IDE工具查询:IDEA用户可以打开pom.xml文件,点击底部的「Dependency Analyzer」标签,在搜索框输入
mongodb-driver,就能直观看到所有引入该依赖的上游组件,还能直接识别版本冲突;Eclipse用户安装Maven Helper插件后可以实现相同功能。
强制使用高版本mongodb-driver的方案
方案1:直接显式声明依赖(最简方案)
Maven遵循「依赖路径最近优先」规则,直接在pom.xml的<dependencies>节点中声明你需要的高版本mongodb-driver,就会自动覆盖所有间接引入的低版本:
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver</artifactId> <version>3.12.14</version> <!-- 可按需选择3.5以上的稳定版本,3.12.x是官方长期维护版本 --> </dependency>
方案2:dependencyManagement统一管控版本(推荐Spring Boot/多模块项目使用)
在pom.xml的<dependencyManagement>节点中统一声明mongodb全系列依赖的版本,所有间接依赖都会自动对齐这个版本,避免后续出现相关子依赖版本不一致的问题:
<dependencyManagement> <dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver</artifactId> <version>3.12.14</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-core</artifactId> <version>3.12.14</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>bson</artifactId> <version>3.12.14</version> </dependency> </dependencies> </dependencyManagement>
方案3:排除指定上游依赖的低版本mongodb-driver
如果你已经定位到具体引入低版本依赖的上游组件,可以通过exclusion标签排除该组件自带的mongodb-driver,之后组件会自动使用项目中统一的高版本:
<!-- 示例为排除spring-boot-starter-data-mongodb自带的mongodb-driver,可替换为你定位到的实际上游依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> <exclusions> <exclusion> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver</artifactId> </exclusion> </exclusions> </dependency>
修改完成后可以重新执行mvn dependency:tree -Dincludes=org.mongodb:mongodb-driver确认版本已经升级到指定的高版本即可。
内容的提问来源于stack exchange,提问作者Ann
相关产品推荐
相关产品推荐

