如何在Gradle Kotlin DSL中使用gradle.properties中的插件版本?

Rom*_*n Q 6 intellij-idea gradle kotlin gradle-kotlin-dsl

现在我用这种方式:

plugins {
    val kotlinVersion: String by project
    val springBootPluginVersion: String by project
    val springDependencyManagementPluginVersion: String by project

    id("org.jetbrains.kotlin.plugin.allopen") version kotlinVersion
    id("org.jetbrains.kotlin.jvm") version kotlinVersion
    id("org.springframework.boot") version springBootPluginVersion
    id("io.spring.dependency-management") version springDependencyManagementPluginVersion
}
Run Code Online (Sandbox Code Playgroud)

这个变种编译和工作,但我不知道这是正确的,为什么IntelliJ IDEA在放置版本定义的行上显示错误:

'val Build_gradle.project: Project' can't be called in this context by implicit receiver. Use the explicit one if necessary
Run Code Online (Sandbox Code Playgroud)

Pet*_*rch 9

(交叉发布:来源

显然,如果过去不可能的话,最近这已经成为可能。(几乎)来自文档

gradle.properties:

helloPluginVersion=1.0.0
Run Code Online (Sandbox Code Playgroud)

settings.gradle.kts:

helloPluginVersion=1.0.0
Run Code Online (Sandbox Code Playgroud)

现在文档说build.gradle.kts应该是空的,但我的测试表明您仍然需要它build.gradle.kts

pluginManagement {
  val helloPluginVersion: String by settings
  plugins {
    id("com.example.hello") version helloPluginVersion
  }
}
Run Code Online (Sandbox Code Playgroud)

版本现在由决定settings.gradle.kts,因此gradle.properties我们想要的就是......