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

Gradle多模块项目:如何排查并移除指定版本的依赖库?

解决Gradle项目中R2DBC PostgreSQL驱动版本冲突问题

1. 精准定位旧版本依赖的来源

普通的dependencies任务只会显示冲突解决后胜出的版本,要找到0.8.12.RELEASE的具体引入路径,用Gradle的dependencyInsight任务,它能列出该依赖的所有引入链路:

./gradlew adapters:dependencyInsight --dependency io.r2dbc:r2dbc-postgresql

执行后会输出所有引入该依赖的模块、依赖层级,以及对应版本,你能直接看到0.8.12.RELEASE是从主模块的某个传递依赖引入,还是由Spring依赖管理插件锁定的版本。

2. 针对性移除旧版本

根据dependencyInsight的结果,分两种场景处理:

场景A:旧版本来自主模块的传递依赖

如果0.8.12.RELEASE是通过implementation project(":main")传递过来的,要在主模块的依赖声明上添加排除规则,而不是你自己的runtimeOnly依赖上:

// 在adapters模块的build.gradle中
implementation(project(":main")) {
    exclude(group = 'io.r2dbc', module = 'r2dbc-postgresql')
}

这样就能阻断主模块传递过来的旧版本驱动。

场景B:旧版本由Spring Dependency Management插件锁定

如果是主模块的io.spring.dependency-management插件统一管控了版本,导致旧版本依然被引入,可在adapters模块中直接覆盖版本声明:

// 在adapters模块的build.gradle中
dependencyManagement {
    dependencies {
        dependency 'io.r2dbc:r2dbc-postgresql:0.8.13.RELEASE'
    }
}

此时Spring依赖管理插件会优先使用你指定的新版本,不再引入旧版本。

3. 验证结果

再次执行dependencyInsight命令确认旧版本已被移除:

./gradlew adapters:dependencyInsight --dependency io.r2dbc:r2dbc-postgresql

输出应该仅显示0.8.13.RELEASE;也可以查看构建后的输出目录(如build/libs下的依赖包),确认只有新版本存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:50:26