diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9ef66dab62..faae7439da 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -85,10 +85,12 @@ so do familiarize yourself with the following guidelines. ## Environment requirements -* JDK >= 21 referred to by the `JAVA_HOME` environment variable. +* A Java runtime available through `JAVA_HOME` or `PATH` is required to launch the Gradle Wrapper. + The build itself runs on the daemon JDK provisioned from `gradle/gradle-daemon-jvm.properties`. - * Note, any version above 21 should work in theory, but JDK 21 is the only version we test with, - so it is the recommended version. + * The daemon JDK version is controlled by `gradle-jdk` in `gradle/libs.versions.toml`. + After changing it (for example, from `21` to `25`), run `./gradlew updateDaemonJvm` + and commit the regenerated properties file. * We recommend using [IntelliJ IDEA](https://www.jetbrains.com/idea/download/) as the IDE. This has the best support for Kotlin, compiler plugins, Gradle, and [Kotlin Notebook](https://kotlinlang.org/docs/kotlin-notebook-overview.html) of course. diff --git a/build.gradle.kts b/build.gradle.kts index 53832c8e22..af50ae30d9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,5 @@ +import org.gradle.buildconfiguration.tasks.UpdateDaemonJvm +import org.gradle.jvm.toolchain.JavaLanguageVersion import org.jetbrains.kotlinx.publisher.apache2 import org.jetbrains.kotlinx.publisher.developer import org.jetbrains.kotlinx.publisher.githubRepo @@ -15,6 +17,13 @@ plugins { } } +// `gradle-jdk` is the single source of truth for both build toolchains and the Gradle daemon. +// To upgrade (for example, to JDK 25), change it in gradle/libs.versions.toml, run +// `./gradlew updateDaemonJvm`, and commit the regenerated gradle-daemon-jvm.properties file. +tasks.named("updateDaemonJvm") { + languageVersion.set(libs.versions.gradle.jdk.map { JavaLanguageVersion.of(it) }) +} + val projectName: String = providers.gradleProperty("projectName").get() configurations { diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties new file mode 100644 index 0000000000..93ee2e5483 --- /dev/null +++ b/gradle/gradle-daemon-jvm.properties @@ -0,0 +1,12 @@ +#This file is generated by updateDaemonJvm +toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/402983f310a88ac68b3e883c7c91c760/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/e50b80b5a11d194a898bc3e6211b7c4b/redirect +toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/402983f310a88ac68b3e883c7c91c760/redirect +toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/e50b80b5a11d194a898bc3e6211b7c4b/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/f257be9f04bfdf169051808541767806/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/1dcbacacca32618bd21ec5465779ade1/redirect +toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/402983f310a88ac68b3e883c7c91c760/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/e50b80b5a11d194a898bc3e6211b7c4b/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/476d3c08f4989328dee56d22e202d98d/redirect +toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/5a88b04b5e582b332d2e6bc12b45f1b9/redirect +toolchainVersion=21