启用Strictly规则后Gradle仍降级mssql-jdbc版本的问题
问题
使用Gradle 8.6版本,在build.gradle中配置如下内容:
compileJava { targetCompatibility = '21' sourceCompatibility = '21' } dependencies { implementation "com.microsoft.sqlserver:mssql-jdbc:12.6.1.jre11" }
执行gradle dependencies命令后,发现mssql-jdbc版本被降级至10.2.3.jre8:
+--- com.microsoft.sqlserver:mssql-jdbc:12.6.1.jre11 -> 10.2.3.jre8
确认无其他依赖引入mssql-jdbc,即使启用Strictly版本约束:
implementation("com.microsoft.sqlserver:mssql-jdbc") { version { strictly "$sqlServerConnectorVersion" } }
版本仍被降级至10.2.3.jre8:
+--- com.microsoft.sqlserver:mssql-jdbc:{strictly 12.6.1.jre11} -> 10.2.3.jre8
解决方案
此问题属于项目特定场景问题,实际是某子项目虽无需依赖mssql-jdbc,但却引发了版本降级,将该子项目中的相关影响排除后即可解决问题。
根本原因
Gradle的依赖解析机制中,多模块项目存在冲突的依赖需求时,可能出现版本意外降级的情况。通常是因为某个子项目引入了更低版本的依赖,或是通过间接方式触发了Gradle的版本冲突解决策略,导致优先选择了更低版本。类似场景的深层逻辑可参考关于Gradle降级传递依赖的相关技术讨论。
内容的提问来源于stack exchange,提问作者Mike Cooper
相关产品推荐
相关产品推荐

