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
相关产品推荐
相关产品推荐

