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

Gradle多子项目中如何全局排除Quartz依赖的HikariCP-java7

解决Gradle项目全局排除HikariCP-java7依赖的方案

方案1:根项目全局配置依赖排除

在根项目的build.gradle中添加subprojects块,统一为所有子项目排除指定依赖:

subprojects {
    dependencies {
        configurations.all {
            exclude group: 'com.zaxxer', module: 'HikariCP-java7'
        }
    }
}

该配置会让所有子项目的任何依赖解析场景中,自动排除HikariCP-java7,无论它是通过哪个上游依赖引入的。

方案2:使用Dependency Constraints强制阻断依赖

如果全局排除不够灵活,可以用Gradle的依赖约束强制禁止该依赖被引入,在根项目build.gradle的subprojects块中配置:

subprojects {
    dependencies {
        constraints {
            implementation('com.zaxxer:HikariCP-java7') {
                because '与项目使用的HikariCP:5.0.1冲突,禁止引入'
                version {
                    strictly '0' // 强制版本为0,等效于排除该依赖
                }
            }
        }
    }
}

这种方式会让Gradle在依赖解析阶段直接拒绝引入HikariCP-java7,若有依赖试图引入它,会触发解析错误,能更严格地管控依赖冲突。

方案3:修正子项目B的排除配置(确保传递生效)

你之前在子项目B的api依赖中添加的排除未传递到A,可能是Gradle配置的传递性问题。可以在B的configurations.all中单独配置排除,确保依赖B的项目能继承该规则:

// 子项目B的build.gradle
configurations.all {
    exclude group: 'com.zaxxer', module: 'HikariCP-java7'
}

dependencies {
    api('org.quartz-scheduler:quartz:2.3.2')
}

验证排除效果

配置完成后,执行以下命令检查子项目A的依赖树,确认HikariCP-java7已被移除:

A/gradlew -q dependencies --configuration runtimeClasspath

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:36:23