Kotlin多平台macosArm64在IDEA构建失败,终端执行正常求助
问题
现有一份Kotlin Multiplatform示例代码,通过终端执行gradle macos:runDebugExecutableMacosArm64可成功运行,输出“Hello macos-arm64 native!”,但在IntelliJ IDEA中编译时出现以下错误:
Execution failed for task ':commonizeNativeDistribution'. > Could not resolve all files for configuration ':kotlinKlibCommonizerClasspath'. > Cannot resolve external dependency org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.10 because no repositories are defined.
同时IDEA无法识别构建脚本(内容全红高亮)。移除macosArm64()目标并添加jvm()后,IDEA可正常识别构建脚本,且Fleet构建该项目时也会出现相同错误。
咨询点:
- IDEA缺少什么配置导致无法处理构建脚本?
- 为何该代码在终端可正常执行?
环境信息:
- Mac OS X 14.1 aarch64
- Xcode 15.0.1 Build version 15A507
- Gradle 8.4
- Kotlin 1.9.10
- JVM 17.0.2
- IntelliJ IDEA 2023.2.4(社区版)
解答
一、终端正常执行但IDE报错的原因
终端执行Gradle任务时,会自动调用Kotlin插件内置的仓库源拉取kotlin-klib-commonizer-embeddable这类Native工具依赖;但IDEA和Fleet在同步项目时,会严格遵循构建脚本中显式声明的仓库配置——如果根配置文件里没添加对应仓库,IDE就无法定位到该依赖,进而触发报错。
切换到jvm()目标时,JVM相关工具依赖的仓库路径会被IDE内置的Gradle/Kotlin支持自动补全,因此不会出现识别问题。
二、IDEA需补充的配置
要让IDE正常识别构建脚本,需在项目根级配置文件中显式添加Kotlin Native工具依赖的仓库源,有两种配置方式:
方式1:在settings.gradle.kts中配置
pluginManagement { repositories { gradlePluginPortal() mavenCentral() maven("https://maven.pkg.jetbrains.space/public/p/kotlin/dev") } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { mavenCentral() maven("https://maven.pkg.jetbrains.space/public/p/kotlin/dev") } }
方式2:在根build.gradle.kts中配置
allprojects { repositories { mavenCentral() maven("https://maven.pkg.jetbrains.space/public/p/kotlin/dev") } }
配置完成后,重新同步Gradle项目,IDEA即可正常识别构建脚本并完成编译。
内容的提问来源于stack exchange,提问作者Stanley Wintergreen
相关产品推荐
相关产品推荐

