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

Viewed 7981

I am following this guide.

The guide reads: Extra properties on a project are visible from its subprojects. This does not seem to work for me, as the following does not work:

In build.gradle.kts I have:

val ktorVersion by extra("1.3.2")

In subproject/build.gradle.kts I have:

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

In the project level build.gradle.kts:

val ktorVersion by extra { "1.3.2" }

In the subproject/build.gradle.kts:

val ktorVersion: String by rootProject.extra

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

For more info: Gradle docs on Extra properties

Also, you may define the versions in an object inside the buildSrc project. buildSrc is a special project in Gradle, all declarations from it are visible across all Gradle projects (except settings.gradle.kts). So you may have

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

object Versions {
  const val ktorVersion = "1.2.3"
}

And then use it from any your build.gradle (.kts) files

import myPackage.Versions.ktorVersion

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