gradle 构建中缺少 kotlin-compiler-embeddable

标签 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-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/

相关文章:

kotlin - 如何在 kotlin native 中使用 swift 库?

generics - 如何强制客户端代码使用合约初始化 Kotlin 中所有必需的构建器字段?

gradle - 无法使用kotlin-multipatform项目

android - 错误:任务 ':app:packageAllDebugClassesForMultiDex'的执行失败。 > java.util.zip.ZipException:重复输入问题

android - 如何修复 Android Studio 中的 VectorDrawableCompat 配置错误?

android - KtLint 任务 ':app:ktlintAndroidTestDebugSourceSetCheck' 执行失败

android-studio - ^ map在Android Studio 4.0中是什么意思?

spring-boot - 如何连接嵌套通量

android - Android Studio 2.2.2中的Gradle同步错误

gradle - Gradle:path或baseDir都可以为null或空字符串