Gradle KTS中如何修复‘预编译脚本插件请求不能包含版本号’错误?
错误含义
Gradle对buildSrc下的预编译约定脚本有明确限制:不能在plugins块里直接给插件指定版本号。因为buildSrc本身是一个独立的Gradle子项目,所有要在预编译脚本中使用的插件,都得先作为依赖添加到buildSrc自己的构建配置里,预编译脚本只负责引用插件ID,版本统一由buildSrc的构建脚本管控。
你这里的问题就是给kotlin("jvm")加了version "2.0.20",直接违反了这个规则。
修复步骤
第一步:修改预编译脚本,移除插件版本号
打开ai.acyclic.java-conventions.gradle.kts,把kotlin("jvm")后面的版本号删掉,修改后的plugins块如下:
plugins { base java kotlin("jvm") // 移除version "2.0.20" `java-test-fixtures` `project-report` idea id("com.github.ben-manes.versions") }
第二步:在buildSrc的构建脚本中声明插件依赖
找到buildSrc目录下的build.gradle.kts(没有的话就新建一个),添加Kotlin JVM插件的依赖并指定版本:
plugins { `kotlin-dsl` // 必须添加这个插件,buildSrc才能管理Gradle插件依赖 } repositories { mavenCentral() // 确保能拉取到插件资源 } dependencies { // 引入Kotlin Gradle插件,版本和你之前用的2.0.20一致 implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.20") // 如果com.github.ben-manes.versions插件后续也报同样错误,也在这里声明: // implementation("com.github.ben-manes:gradle-versions-plugin:0.51.0") // 替换成你需要的版本 }
这样修改后,buildSrc会先加载指定版本的Kotlin插件,预编译脚本就能直接引用kotlin("jvm")而不用加版本号了。
内容的提问来源于stack exchange,提问作者tribbloid
相关产品推荐
相关产品推荐

