diff --git a/buildSrc/src/main/java/org/springframework/boot/build/toolchain/ToolchainExtension.java b/buildSrc/src/main/java/org/springframework/boot/build/toolchain/ToolchainExtension.java index efa3731a435..0de3303cb15 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/toolchain/ToolchainExtension.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/toolchain/ToolchainExtension.java @@ -17,6 +17,7 @@ package org.springframework.boot.build.toolchain; import org.gradle.api.Project; +import org.gradle.api.provider.ListProperty; import org.gradle.api.provider.Property; import org.gradle.jvm.toolchain.JavaLanguageVersion; @@ -29,10 +30,13 @@ public class ToolchainExtension { private final Property maximumCompatibleJavaVersion; + private final ListProperty testJvmArgs; + private final JavaLanguageVersion javaVersion; public ToolchainExtension(Project project) { this.maximumCompatibleJavaVersion = project.getObjects().property(JavaLanguageVersion.class); + this.testJvmArgs = project.getObjects().listProperty(String.class); String toolchainVersion = (String) project.findProperty("toolchainVersion"); this.javaVersion = (toolchainVersion != null) ? JavaLanguageVersion.of(toolchainVersion) : null; } @@ -41,6 +45,10 @@ public class ToolchainExtension { return this.maximumCompatibleJavaVersion; } + public ListProperty getTestJvmArgs() { + return this.testJvmArgs; + } + JavaLanguageVersion getJavaVersion() { return this.javaVersion; } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/toolchain/ToolchainPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/toolchain/ToolchainPlugin.java index 9bb259ccdae..a8e55e1bc5b 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/toolchain/ToolchainPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/toolchain/ToolchainPlugin.java @@ -16,9 +16,6 @@ package org.springframework.boot.build.toolchain; -import java.util.Collections; -import java.util.List; - import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.plugins.JavaPluginExtension; @@ -56,7 +53,7 @@ public class ToolchainPlugin implements Plugin { JavaToolchainSpec toolchainSpec = project.getExtensions().getByType(JavaPluginExtension.class) .getToolchain(); toolchainSpec.getLanguageVersion().set(toolchain.getJavaVersion()); - configureTestToolchain(project); + configureTestToolchain(project, toolchain); } } @@ -71,11 +68,11 @@ public class ToolchainPlugin implements Plugin { project.getTasks().withType(Test.class, (task) -> task.setEnabled(false)); } - private void configureTestToolchain(Project project) { - project.getTasks().withType(Test.class, (test) -> { - List arguments = Collections.singletonList("--illegal-access=warn"); - test.jvmArgs(arguments); - }); + private void configureTestToolchain(Project project, ToolchainExtension toolchain) { + if (!toolchain.getTestJvmArgs().isPresent()) { + return; + } + project.getTasks().withType(Test.class, (test) -> test.jvmArgs(toolchain.getTestJvmArgs().get())); } } diff --git a/spring-boot-project/spring-boot/build.gradle b/spring-boot-project/spring-boot/build.gradle index 2a887b30990..4f9a991444e 100644 --- a/spring-boot-project/spring-boot/build.gradle +++ b/spring-boot-project/spring-boot/build.gradle @@ -9,6 +9,10 @@ plugins { description = "Spring Boot" +toolchain { + testJvmArgs.add("--add-opens=java.base/java.net=ALL-UNNAMED") +} + def tomcatConfigProperties = "$buildDir/tomcat-config-properties" configurations {