添加kotlin-scripting-jvm-host后Gradle buildSrc同步失败求助
针对你遇到的COMPILE_INCREMENTAL_WITH_ARTIFACT_TRANSFORM错误,结合移除kotlin-scripting-jvm-host后恢复正常的现象,大概率是以下几种情况:
Kotlin版本不兼容:
kotlin-scripting-jvm-host依赖的Kotlin核心组件(如stdlib、reflect)版本,和你的项目/buildSrc使用的Kotlin版本不一致。buildSrc作为Gradle构建脚本的编译环境,对Kotlin版本的一致性要求极高,版本错位会直接触发增量编译阶段的artifact transform异常,而且这类错误经常不会输出详细日志。增量编译机制冲突:脚本宿主依赖本身的类加载逻辑,和Gradle增量编译的artifact transform流程不兼容。
kotlin-scripting-jvm-host会修改类加载上下文,干扰Gradle对buildSrc编译产物的增量追踪逻辑,导致无明确提示的编译失败。类加载隔离被破坏:buildSrc有严格的类加载隔离策略,避免和Gradle自身的类路径冲突。
kotlin-scripting-jvm-host引入的传递依赖(比如kotlinx-coroutines、反射类)可能和Gradle内置的依赖重复或版本冲突,打破了隔离机制,触发编译阶段的transform错误。IntelliJ缓存残留:即使你清理了构建缓存,IntelliJ自身的Gradle同步缓存(比如
.idea目录下的缓存文件)可能还残留着异常状态,重新添加依赖时旧缓存会干扰同步流程。
强制对齐Kotlin版本:在buildSrc的
build.gradle.kts里明确指定kotlin-scripting-jvm-host的版本,和项目根目录使用的Kotlin版本完全一致,同时对齐JDK工具链版本:plugins { `kotlin-dsl` } repositories { mavenCentral() } dependencies { // 替换成你项目使用的Kotlin版本,比如1.9.20 implementation("org.jetbrains.kotlin:kotlin-scripting-jvm-host:1.9.20") } kotlin { jvmToolchain(17) // 和项目JDK版本保持一致 }禁用增量编译获取详细日志:在buildSrc目录下创建
gradle.properties,添加以下配置强制全量编译,这样能触发更详细的错误输出:org.gradle.caching=false org.gradle.configureondemand=false org.gradle.daemon=false检查依赖树找冲突:执行命令
./gradlew buildSrc:dependencies,查看kotlin-scripting-jvm-host的传递依赖,重点看是否有和Gradle内置依赖(比如Gradle自带的Kotlin、Groovy组件)重复或版本不一致的项。彻底清理缓存重新导入:删除项目根目录的
.idea文件夹、build目录以及buildSrc/build目录,然后关闭IntelliJ,重新打开并导入项目,确保所有缓存都被清除。
内容的提问来源于stack exchange,提问作者Seggan

