我正在尝试设置多项目 gradle/kotlin 构建,但收到以下错误:
Could not determine the dependencies of task ':compileKotlin'.
> Could not resolve all files for configuration ':kotlinCompilerClasspath'.
> Cannot resolve external dependency org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.10 because no repositories are defined.
Required by:
project :
奇怪的是空的项目:
。
我的简化版 build.gradle.kts
如下所示:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
base
kotlin("jvm") version "1.4.10"
}
buildscript {
extra["kotlin_version"] = "1.4.10"
repositories {
jcenter()
mavenCentral()
}
}
subprojects {
apply(plugin = "kotlin")
repositories {
jcenter()
mavenCentral()
}
tasks.compileKotlin {
kotlinOptions.jvmTarget = "11"
}
tasks.compileTestKotlin {
kotlinOptions.jvmTarget = "11"
}
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib:${rootProject.extra["kotlin_version"]}")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${rootProject.extra["kotlin_version"]}")
}
}
我需要复制 buildscript
部分中的存储库吗?
导致上述错误的原因是什么?
最佳答案
看起来您在 subproject
部分中完成的 repositories { ... }
配置就足够了,但它仅适用于子项目,而不适用于根项目本身(它也应用了 Kotlin 插件,并且其任务 :compileKotlin
失败)。
有两种方法可以解决此问题。
首先,您可以将 repositories { ... }
部分从 subprojects { ... }
移动到新 block allprojects { ... }
(因此也适用于根项目)。
或者,如果您实际上不需要根项目中的 Kotlin 插件(即您那里没有 Kotlin 代码),您可以 add .apply(false)
到您的插件声明:
plugins {
kotlin("jvm").version("1.4.10").apply(false)
}
关于gradle 构建中缺少 kotlin-compiler-embeddable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64861887/