gpt4 book ai didi

kotlin - 未解析的引用 : KotlinCompilerVersion in build. gradle.kts

转载 作者:行者123 更新时间:2023-12-02 05:58:58 24 4
gpt4 key购买 nike

build.gradle.kts 文件中,我将此代码包含在顶行。然后我使用下面的 KotlinCompilerVesion.VERSION 。

import org.jetbrains.kotlin.config.KotlinCompilerVersion

有些代码工作正常,但有些代码失败:

似乎只有 plugins block 无法启用此导入

这里工作正常:

dependencies {
Implementation(kotlin("stdlib-jdk7", KotlinCompilerVersion.VERSION))
Implementation(kotlin("test", KotlinCompilerVersion.VERSION))
}

这里总是错误的:

plugins {
id("com.android.application")
kotlin("android")
kotlin("android.extensions")

/*
* Error: Unresolved reference: KotlinCompilerVersion
*/
id("kotlinx-serialization") version KotlinCompilerVersion.VERSION

/*
* Error: Unresolved reference: KotlinCompilerVersion
*/
id("kotlinx-serialization") version "$KotlinCompilerVersion.VERSION"

/*
* Error: Unresolved reference: KotlinCompilerVersion
*/
id("kotlinx-serialization") version "${KotlinCompilerVersion.VERSION}"
}

如何在此处正确使用它,而不声明 ext.xxxVersion var?

最佳答案

是的,插件 DSL 的语法是有限的,因为 Gradle 在解析文件的其余部分之前解析它,这要求定义是静态的(不引用变量、常量等,几乎不允许使用任何代码)。请参阅Limitations of the plugins DSL了解详情。

我处理仅定义一次 Kotlin 版本的方法是实际使用我在插件 block 中指定的版本作为文件其他部分的规范版本(我从 this blog post by Simon Wirtz 中选取此版本),如下所示:

import org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapper

val kotlinVersion = plugins.getPlugin(KotlinPluginWrapper::class.java)
.kotlinPluginVersion

plugins {
kotlin("jvm") version "1.3.30"
}

dependencies {
implementation(platform(kotlin("bom", kotlinVersion)))
implementation(kotlin("stdlib-jdk8"))
}

但是,在插件 block 中它需要是静态的,不幸的是如果需要的话需要重复。

<小时/>

更新:我实际上刚刚了解到可以在插件 DSL 中使用常量,但必须在 Gradle 解析 build.gradle.kts 文件之前定义它们,即来自buildSrc。我在 fuel 中注意到了这一点图书馆。本质上,创建包含以下内容的 buildSrc/build.gradle.kts:

plugins {
`kotlin-dsl`
}

repositories {
jcenter()
}

然后使用以下内容创建 buildSrc/src/main/kotlin/Constants.kt:

object Kotlin {
const val version = "1.3.30"
}

然后您就可以在主 build.gradle.kts 中使用以下内容:

plugins {
kotlin("jvm") version Kotlin.version
}

关于kotlin - 未解析的引用 : KotlinCompilerVersion in build. gradle.kts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55619577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com