为什么我无法使用 Gradle Kotlin DSL (5.0) 访问 build.gradle.kts 的“插件”部分中的项目属性?

Vic*_*tor 7 gradle kotlin build.gradle gradle-kotlin-dsl

Gradle 5.0、Kotlin DSL

创建gradle.properties文件:

kotlinVersion=1.3.10
Run Code Online (Sandbox Code Playgroud)

创建build.gradle.kts文件:

val kotlinVersion: String by project

println(kotlinVersion) // works

plugins {
    kotlin("jvm").version(kotlinVersion)
    //                    ^ Unresolved reference: kotlinVersion

}

repositories {
    jcenter()
}

tasks.register("compute") {
    doLast {
        println(kotlinVersion) // works
    }
}
Run Code Online (Sandbox Code Playgroud)

运行gradle compute,然后更改

kotlin("jvm").version(kotlinVersion)
Run Code Online (Sandbox Code Playgroud)

kotlin("jvm").version("1.3.10")
Run Code Online (Sandbox Code Playgroud)

然后再次运行。一切正常。

我只是做错了什么吗?或者这是某种限制或错误?

我只是想将 Kotlin 版本移出构建脚本,这样我就可以稍后更改它(例如通过命令行... -PkotlinVersion=1.3.0),并保持依赖项和插件相同。

yol*_*ole 1

plugins块与构建脚本的其余部分分开评估,因为您使用的插件集决定了构建脚本其余部分的类路径(和名称解析范围)。因此,plugins块外部的声明不能在该块内部使用。