Skip to content

Commit 35fa59f

Browse files
committed
Fail with a useful error message if Gradle is run on JDK < 24
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
1 parent 3d8c439 commit 35fa59f

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

buildSrc/build.gradle

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,6 @@ plugins {
2222
id "org.jetbrains.dokka" version "2.1.0"
2323
}
2424

25-
if (!JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_24)) {
26-
throw new GradleException("This build requires Java 24 or newer to run, but you are currently using Java ${JavaVersion.current()}")
27-
}
28-
2925
repositories {
3026
mavenCentral()
3127
spring.mavenRepositoriesFor("${springFrameworkVersion}")

buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import io.spring.javaformat.gradle.SpringJavaFormatPlugin;
3333
import io.spring.javaformat.gradle.tasks.CheckFormat;
3434
import io.spring.javaformat.gradle.tasks.Format;
35+
import org.gradle.api.GradleException;
3536
import org.gradle.api.JavaVersion;
3637
import org.gradle.api.Project;
3738
import org.gradle.api.Task;
@@ -249,6 +250,14 @@ private void configureJavaConventions(Project project) {
249250
}
250251
args.addAll(Arrays.asList("-Werror", "-Xlint:unchecked", "-Xlint:deprecation", "-Xlint:rawtypes",
251252
"-Xlint:varargs"));
253+
compile.doFirst((task) -> {
254+
JavaVersion version = JavaVersion.current();
255+
if (!version.isCompatibleWith(JavaVersion.VERSION_24)) {
256+
throw new GradleException("This build requires at least Java version 24 due to a JDK compiler bug"
257+
+ " that breaks JSpecify nullability analysis. Your current Java version is %s."
258+
.formatted(version));
259+
}
260+
});
252261
});
253262
}
254263

0 commit comments

Comments
 (0)