显式指定jooq-codegen版本仍被降级的原因及解决方法问询
版本降级成因
Spring Boot 2.4.5 官方维护的依赖BOM中,默认锁定的jOOQ全组件版本为3.13.5。你在主项目中导入了Spring Boot的依赖BOM,根据Gradle的依赖管理优先级规则:通过dependencyManagement导入的BOM全局锁定版本优先级,高于子项目中单个依赖显式声明的版本。因此即使子项目单独指定了jooq-codegen的3.14.8版本,也会被全局BOM的规则覆盖,最终所有jOOQ相关依赖统一降级到3.13.5。
修复方案
以下几种方案可按需选择:
全局覆盖版本(推荐,适配全项目统一版本管理规则)
在主项目dependencyManagement块中添加jOOQ版本属性配置,直接覆盖Spring Boot BOM的默认值:ext['jooq.version'] = '3.14.8'配置后全项目所有jOOQ相关依赖都会自动使用3.14.8版本,无需单独修改子项目依赖。
子项目单独强制指定版本(仅需单个子项目使用高版本时使用)
在子项目的jooq-codegen依赖声明中添加force规则,强制当前依赖使用指定版本:compile("org.jooq:jooq-codegen:3.14.8") { force = true }若存在其他jOOQ相关依赖未匹配版本,可对jooq、jooq-meta等依赖做相同的force配置。
子项目全局拦截jOOQ版本(需统一控制子项目所有jOOQ依赖版本时使用)
在子项目的build.gradle中添加分辨率策略,强制所有org.jooq组下的依赖使用指定版本:configurations.all { resolutionStrategy.eachDependency { details -> if (details.requested.group == 'org.jooq') { details.useVersion '3.14.8' } } }
内容的提问来源于stack exchange,提问作者MatWdo
相关产品推荐
相关产品推荐

