如何配置Kotlin Gradle插件选择最新稳定版本?
解决Gradle中Kotlin插件与依赖的稳定版本筛选问题
你当前的配置仅对项目依赖生效,但Kotlin插件的版本解析属于构建脚本类路径的独立流程,不受项目依赖的resolutionStrategy管控;同时Kotlin插件版本会与BOM版本联动,当插件拉取到非稳定的Beta版本后,BOM会同步指向该版本,但你的项目依赖规则又拒绝了非稳定版本,最终导致依赖解析失败。
以下是更优的解决方案:
1. 给构建脚本类路径添加稳定版本筛选规则
在buildscript块中配置与项目依赖一致的版本筛选逻辑,让插件版本解析时自动拒绝非稳定版本:
buildscript { def isNonStable = { String version -> def stableKeyword = ['RELEASE', 'FINAL', 'GA'].any { version.toUpperCase().contains(it) } def regex = /^[0-9,.v-]+(-r)?$/ return !stableKeyword && !(version ==~ regex) } repositories { mavenCentral() // 其他你需要的仓库 } configurations.all { resolutionStrategy { componentSelection { all { if (isNonStable(it.candidate.version)) { reject('拒绝非稳定版本') } } } } } }
2. 统一Kotlin插件与BOM的版本约束
用变量统一管理版本范围,确保插件和BOM使用相同的版本规则,避免版本不匹配:
// 统一版本范围约束 def kotlinVersionRange = '[1.7.21, )' plugins { id 'org.jetbrains.kotlin.jvm' version kotlinVersionRange } dependencies { // 对齐所有Kotlin组件版本 implementation platform("org.jetbrains.kotlin:kotlin-bom:$kotlinVersionRange") // Kotlin JDK8标准库 implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8' }
3. 搭配gradle-versions-plugin管控插件版本
如果使用gradle-versions-plugin,可在插件配置中添加规则,让插件版本检查时自动排除非稳定版:
versions { plugins { rejectIf { isNonStable(it.candidate.version) } } }
这样配置后,无论是项目依赖还是Kotlin插件,都会自动筛选1.7.21及以上的最新稳定版本,既避免了手动指定旧版本的模糊逻辑,也从根源上解决了插件与依赖版本不匹配的问题。
内容的提问来源于stack exchange,提问作者brabster
相关产品推荐
相关产品推荐

