Kotlin Gradle脚本插件无法解析Kotlin多平台配置问题
解决Kotlin Multiplatform脚本插件未解析引用问题
核心原因
Kotlin脚本插件(.gradle.kts)不像Groovy脚本那样能隐式识别KMP相关DSL,必须明确引入KMP插件的API依赖,否则kotlin代码块、macosX64()这类平台目标方法都会被标记为未解析引用。
修复方案
1. 给脚本插件添加KMP插件依赖
在kmp-targets.gradle.kts的最顶部加入以下代码:
plugins { kotlin("multiplatform") apply false }
apply false的作用是仅导入KMP的DSL定义,不会自动将插件应用到项目中,避免和主项目的插件配置冲突。
2. 调整主项目的插件应用顺序
在需要使用该脚本插件的项目构建脚本(比如build.gradle.kts)中,先应用Kotlin Multiplatform插件,再引入你的脚本插件:
plugins { kotlin("multiplatform") } apply(from = "kmp-targets.gradle.kts")
如果是通过settings.gradle.kts配置脚本插件仓库后用plugins块引入,也要确保KMP插件的优先级高于自定义脚本插件。
3. 刷新依赖与IDE缓存
- 执行命令行刷新:
./gradlew clean build --refresh-dependencies - 在IDE中执行「同步项目与Gradle文件」操作,必要时重启IDE清除缓存
额外排查项
- 核对Gradle与Kotlin版本兼容性:比如Kotlin 1.9.x要求Gradle 7.5及以上版本,版本不匹配也可能导致DSL识别失败
- 确认脚本插件的引用路径正确:跨模块引用时要使用正确的相对路径
内容的提问来源于stack exchange,提问作者Kevin Galligan
相关产品推荐
相关产品推荐

