How to enforce a specific Java patch version (21.0.9-tem) across multiple Gradle projects?

6 days ago 9
ARTICLE AD BOX

gradle.properties

Add org.gradle.java.installations.auto-detect=false and org.gradle.java.installations.auto-download=false to prevent Gradle from searching for or downloading other JDKs. Use org.gradle.java.installations.paths to manually specify the JDK path. org.gradle.java.installations.auto-detect=false org.gradle.java.installations.auto-download=false org.gradle.java.installations.paths=/home/demo/.sdkman/candidates/java/21.0.9-tem

build.gradle

Set the Java toolchain version to 21.

java { toolchain { languageVersion = JavaLanguageVersion.of(21) } }

Verify the Java version used for compilation:

./gradlew clean compileJava --no-configuration-cache --info --rerun-tasks | grep "Compiling with toolchain"

Expected Output:

Compiling with toolchain '/home/demo/.sdkman/candidates/java/21.0.9-tem'.

Confirm that the project compiles with Java 21 even when the system's default version is Java 17:

$ javac -version javac 17.0.12 $ java -version openjdk version "17.0.12" 2024-07-16 OpenJDK Runtime Environment Temurin-17.0.12+7 (build 17.0.12+7) OpenJDK 64-Bit Server VM Temurin-17.0.12+7 (build 17.0.12+7, mixed mode, sharing) Gradle version: gradle-9.2.1

Stop daemon and clean config cache

if change not work, Stop daemon and clean config cache. then run again.

./gradlew --stop rm -rf .gradle/configuration-cache

gradle.properties

change to 21.0.2-graalce

org.gradle.java.installations.auto-detect=false org.gradle.java.installations.auto-download=false org.gradle.java.installations.paths=/home/demo/.sdkman/candidates/java/21.0.2-graalce

Stop daemon and clean cache

./gradlew --stop rm -rf .gradle/configuration-cache

Re-Run

./gradlew clean compileJava --no-configuration-cache --info --rerun-tasks | grep "Compiling with toolchain"

output

Compiling with toolchain '/home/demo/.sdkman/candidates/java/21.0.2-graalce'.
Read Entire Article