Spring Boot Gradle项目指定BouncyCastle传递依赖版本失败求助
问题分析与解决方案
原因
你的问题出在Spring Cloud依赖管理的优先级高于Spring Boot的版本属性。从依赖链路能看到,spring-security-rsa:1.0.11.RELEASE被spring-cloud-dependencies:2021.0.4锁定版本,该版本的spring-security-rsa硬依赖bcpkix-jdk15on:1.69,你通过ext['bouncycastle.version']设置的版本被Spring Cloud的BOM(物料清单)覆盖了。
解决方案
方案1:强制锁定BouncyCastle版本
在项目的build.gradle中,通过dependencyManagement直接指定BouncyCastle相关依赖的版本,优先级高于所有传递依赖的版本:
dependencyManagement { dependencies { // 同时更新核心包和pkix包,避免版本不一致 dependency 'org.bouncycastle:bcprov-jdk15on:1.72' dependency 'org.bouncycastle:bcpkix-jdk15on:1.72' } }
方案2:升级Spring Cloud版本
Spring Boot 2.7.5对应的兼容Spring Cloud版本是2021.0.x(代号Jubilee),升级到2021.0.5及以上版本,其内置的spring-security-rsa版本会升级到1.0.12.RELEASE及以上,该版本默认依赖bcpkix-jdk15on:1.72,无需手动指定版本。修改Spring Cloud的版本:
ext { set('spring-cloud.version', '2021.0.5') } dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" } }
验证
执行以下命令确认版本是否生效:
gradlew dependencyInsight --dependency bcpkix-jdk15on --configuration compileClasspath
内容的提问来源于stack exchange,提问作者jfk
相关产品推荐
相关产品推荐

