gradle生成中缺少kotlin编译器可嵌入

gradle生成中缺少kotlin编译器可嵌入,kotlin,gradle,Kotlin,Gradle,我正在尝试设置一个多项目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-

我正在尝试设置一个多项目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
部分中的存储库


导致上述错误的原因是什么?

似乎您在
子项目
部分中完成的
存储库{…}
配置就足够了,但它只应用于supbroject,而不应用于根项目本身(它也应用了Kotlin插件,并且其任务
:compileKotlin
失败)

有两种方法可以解决这个问题

首先,您可以将
repositories{…}
部分从
subprojects{…}
移动到新块
allprojects{…}
(因此也应用于根项目)

或者,如果您在根项目中实际上不需要Kotlin插件(即,您在根项目中没有Kotlin代码),您可以将其添加到您的插件声明中:

plugins {
    kotlin("jvm").version("1.4.10").apply(false)
}

这回答了你的问题吗?