From 8cb001d4cf26ad2004dbdfb9514e35b0e8da1826 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 20 Aug 2025 10:36:14 +0100 Subject: [PATCH] Add CI for Java 25 Closes gh-46907 --- .github/workflows/ci.yml | 3 +++ .../boot/testsupport/gradle/testkit/GradleVersions.java | 3 +++ .../org/springframework/boot/maven/JarIntegrationTests.java | 4 ++++ .../boot/web/servlet/server/StaticResourceJarsTests.java | 3 +++ 4 files changed, 13 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2cde114249c..fc9b6210f09 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,6 +25,9 @@ jobs: toolchain: false - version: 24 toolchain: true + - version: 25 + early-access: true + toolchain: true exclude: - os: name: Linux diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleVersions.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleVersions.java index 68dbe28226d..5864768f56b 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleVersions.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleVersions.java @@ -33,6 +33,9 @@ public final class GradleVersions { } public static List allCompatible() { + if (isJavaVersion(JavaVersion.VERSION_25)) { + return Arrays.asList("9.0.0", "9.1.0-rc-1"); + } if (isJavaVersion(JavaVersion.VERSION_24)) { return Arrays.asList(GradleVersion.current().getVersion(), "9.0.0", "9.1.0-rc-1"); } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/JarIntegrationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/JarIntegrationTests.java index 794bc869995..1e3915fb7bc 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/JarIntegrationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/JarIntegrationTests.java @@ -26,6 +26,8 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.jar.JarFile; import org.junit.jupiter.api.TestTemplate; +import org.junit.jupiter.api.condition.DisabledForJreRange; +import org.junit.jupiter.api.condition.JRE; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.loader.tools.JarModeLibrary; @@ -323,6 +325,8 @@ class JarIntegrationTests extends AbstractArchiveIntegrationTests { } @TestTemplate + @DisabledForJreRange(min = JRE.JAVA_25) // Kotlin Maven integration does not support + // Java 25 void whenAProjectUsesKotlinItsModuleMetadataIsRepackagedIntoBootInfClasses(MavenBuild mavenBuild) { mavenBuild.project("jar-with-kotlin-module").execute((project) -> { File main = new File(project, "target/jar-with-kotlin-module-0.0.1.BUILD-SNAPSHOT.jar"); diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/servlet/server/StaticResourceJarsTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/servlet/server/StaticResourceJarsTests.java index 8f06eb3ac03..29447e0889a 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/servlet/server/StaticResourceJarsTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/servlet/server/StaticResourceJarsTests.java @@ -29,6 +29,8 @@ import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledForJreRange; +import org.junit.jupiter.api.condition.JRE; import org.junit.jupiter.api.io.TempDir; import static org.assertj.core.api.Assertions.assertThat; @@ -75,6 +77,7 @@ class StaticResourceJarsTests { } @Test + @DisabledForJreRange(min = JRE.JAVA_25) // Requires -Djdk.net.file.ftpfallback=true void uncPathsAreTolerated() throws Exception { File jarFile = createResourcesJar("test-resources.jar"); List staticResourceJarUrls = new StaticResourceJars().getUrlsFrom(jarFile.toURI().toURL(),