我正在尝试设置一个多项目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 :
奇怪的是空的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 { ... }
移动到一个新的块allprojects { ... }
(因此也应用于根项目(。
或者,如果你在根项目中实际上不需要Kotlin插件(即你没有Kotlin代码(,你可以在插件声明中添加.apply(false)
:
plugins {
kotlin("jvm").version("1.4.10").apply(false)
}