如何使用 Gradle Kotlin DSL 为所有 Gradle 子项目定义变量

How to define a variable for all Gradle subprojects using Gradle Kotlin DSL

我正在关注 this 指南。

指南内容如下:项目的额外属性可从其子项目中看到。 这似乎对我不起作用,因为以下不起作用:

build.gradle.kts 我有:

val ktorVersion by extra("1.3.2")

subproject/build.gradle.kts 我有:

dependencies {
    implementation("io.ktor:ktor-server-core:$ktorVersion")
}

项目级别build.gradle.kts:

val ktorVersion by extra { "1.3.2" }

subproject/build.gradle.kts中:

val ktorVersion: String by rootProject.extra

dependencies {  
   implementation("io.ktor:ktor-server-core:$ktorVersion")
}

更多信息:Gradle docs on Extra properties

此外,您可以在 buildSrc project 内的对象中定义版本。 buildSrc 是 Gradle 中的一个特殊项目,它的所有声明在所有 Gradle 项目中都是可见的(settings.gradle.kts 除外)。所以你可能有

buildSrc/src/main/kotlin/myPackage/Versions.kt

object Versions {
  const val ktorVersion = "1.2.3"
}

然后从您的任何 build.gradle (.kts) 文件中使用它

import myPackage.Versions.ktorVersion

dependencies {
  implementation("io.ktor:ktor-server-core:$ktorVersion")
}