diff --git a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JavaModulePlugin.java b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JavaModulePlugin.java index e197951b8d..6be372d5b7 100644 --- a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JavaModulePlugin.java +++ b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JavaModulePlugin.java @@ -81,6 +81,11 @@ public class JavaModulePlugin implements Plugin { javaToolchainSpec.getLanguageVersion().set( jdkVersionsConfig.getTestLauncherVersion() ); } ) ); + + final String launcherArgs = jdkVersionsConfig.getTest().getLauncherArgs(); + if ( launcherArgs != null ) { + testTask.jvmArgs( (Object[]) launcherArgs.split( " " ) ); + } } } } diff --git a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionConfig.java b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionConfig.java index 18020922f8..eb7a9582ce 100644 --- a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionConfig.java +++ b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionConfig.java @@ -30,6 +30,7 @@ public class JdkVersionConfig { public static final String DSL_NAME = "jdkVersions"; public static final String MAIN_JDK_VERSION = "main.jdk.version"; public static final String TEST_JDK_VERSION = "test.jdk.version"; + public static final String TEST_JDK_LAUNCHER_ARGS = "test.jdk.launcher.args"; private final boolean explicit; private final JavaLanguageVersion baseline; @@ -43,11 +44,12 @@ public class JdkVersionConfig { JavaLanguageVersion mainReleaseVersion, JavaLanguageVersion testCompileVersion, JavaLanguageVersion testReleaseVersion, - JavaLanguageVersion testLauncherVersion) { + JavaLanguageVersion testLauncherVersion, + String testLauncherArgs) { this.explicit = explicit; this.baseline = baseline; this.main = new MainJdks( mainCompileVersion, mainReleaseVersion ); - this.test = new TestJdks( testCompileVersion, testReleaseVersion, testLauncherVersion ); + this.test = new TestJdks( testCompileVersion, testReleaseVersion, testLauncherVersion, testLauncherArgs ); } public boolean isExplicitlyConfigured() { @@ -110,7 +112,8 @@ public class JdkVersionConfig { JavaLanguageVersion explicitTestVersion, JavaLanguageVersion gradleJdkVersion, JavaLanguageVersion baselineJdkVersion, - JavaLanguageVersion maxSupportedJdkVersion) { + JavaLanguageVersion maxSupportedJdkVersion, + String testLauncherArgs) { final boolean explicitlyConfigured = explicitMainVersion != null || explicitTestVersion != null; final JavaLanguageVersion mainCompileVersion; @@ -144,7 +147,8 @@ public class JdkVersionConfig { mainReleaseVersion, testCompileVersion, testReleaseVersion, - testLauncherVersion + testLauncherVersion, + testLauncherArgs ); } else { @@ -169,7 +173,8 @@ public class JdkVersionConfig { baselineJdkVersion, gradleJdkVersion, baselineJdkVersion, - gradleJdkVersion + gradleJdkVersion, + testLauncherArgs ); } } @@ -245,14 +250,17 @@ public class JdkVersionConfig { private final JavaLanguageVersion compileVersion; private final JavaLanguageVersion releaseVersion; private final JavaLanguageVersion launcherVersion; + private final String launcherArgs; public TestJdks( JavaLanguageVersion compileVersion, JavaLanguageVersion releaseVersion, - JavaLanguageVersion launcherVersion) { + JavaLanguageVersion launcherVersion, + String launcherArgs) { this.compileVersion = compileVersion; this.releaseVersion = releaseVersion; this.launcherVersion = launcherVersion; + this.launcherArgs = launcherArgs; } public JavaLanguageVersion getCompiler() { @@ -273,6 +281,10 @@ public class JdkVersionConfig { return launcherVersion; } + public String getLauncherArgs() { + return launcherArgs; + } + @Override public String toString() { return "[compile: " + compileVersion + ", release:" + releaseVersion + ", launcher: " + launcherVersion + "]"; diff --git a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionPlugin.java b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionPlugin.java index e9ad316048..ee79cfe6eb 100644 --- a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionPlugin.java +++ b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionPlugin.java @@ -26,6 +26,7 @@ import org.gradle.jvm.toolchain.JavaToolchainSpec; import org.jetbrains.annotations.NotNull; import static org.hibernate.orm.toolchains.JdkVersionConfig.MAIN_JDK_VERSION; +import static org.hibernate.orm.toolchains.JdkVersionConfig.TEST_JDK_LAUNCHER_ARGS; import static org.hibernate.orm.toolchains.JdkVersionConfig.TEST_JDK_VERSION; import static org.hibernate.orm.toolchains.JdkVersionConfig.createVersionConfig; import static org.hibernate.orm.toolchains.JdkVersionConfig.extractVersion; @@ -51,13 +52,16 @@ public class JdkVersionPlugin implements Plugin { final VersionCatalog jdkVersions = versionCatalogs.named( "jdks" ); final JavaLanguageVersion baselineJdkVersion = getJavaLanguageVersion( jdkVersions, "baseline" ); final JavaLanguageVersion maxSupportedJdkVersion = getJavaLanguageVersion( jdkVersions, "maxSupportedBytecode" ); + final Object testLauncherArgsObject = project.getProperties().get( TEST_JDK_LAUNCHER_ARGS ); + final String testLauncherArgs = testLauncherArgsObject == null ? null : testLauncherArgsObject.toString(); final JdkVersionConfig jdkVersionConfig = createVersionConfig( explicitMainVersion, explicitTestVersion, gradleJdkVersion, baselineJdkVersion, - maxSupportedJdkVersion + maxSupportedJdkVersion, + testLauncherArgs ); project.getExtensions().add( JdkVersionConfig.DSL_NAME, jdkVersionConfig ); diff --git a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionSettingsPlugin.java b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionSettingsPlugin.java index 66b3f19dbd..245f19ead5 100644 --- a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionSettingsPlugin.java +++ b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionSettingsPlugin.java @@ -6,6 +6,7 @@ */ package org.hibernate.orm.toolchains; +import org.gradle.StartParameter; import org.gradle.api.JavaVersion; import org.gradle.api.Plugin; import org.gradle.api.artifacts.VersionCatalog; @@ -17,6 +18,7 @@ import org.gradle.jvm.toolchain.JavaLanguageVersion; import org.jetbrains.annotations.NotNull; import static org.hibernate.orm.toolchains.JdkVersionConfig.MAIN_JDK_VERSION; +import static org.hibernate.orm.toolchains.JdkVersionConfig.TEST_JDK_LAUNCHER_ARGS; import static org.hibernate.orm.toolchains.JdkVersionConfig.TEST_JDK_VERSION; import static org.hibernate.orm.toolchains.JdkVersionConfig.createVersionConfig; import static org.hibernate.orm.toolchains.JdkVersionConfig.extractVersion; @@ -39,13 +41,17 @@ public class JdkVersionSettingsPlugin implements Plugin { // maxSupportedJdkVersion = getJavaLanguageVersion( jdkVersions, "maxSupportedBytecode" ); baselineJdkVersion = JavaLanguageVersion.of( "11" ); maxSupportedJdkVersion = JavaLanguageVersion.of( "17" ); + final StartParameter startParameters = settings.getGradle().getStartParameter(); + final Object testLauncherArgsObject = startParameters.getProjectProperties().get( TEST_JDK_LAUNCHER_ARGS ); + final String testLauncherArgs = testLauncherArgsObject == null ? null : testLauncherArgsObject.toString(); final JdkVersionConfig jdkVersionConfig = createVersionConfig( explicitMainVersion, explicitTestVersion, gradleJdkVersion, baselineJdkVersion, - maxSupportedJdkVersion + maxSupportedJdkVersion, + testLauncherArgs ); settings.getGradle().getExtensions().add( JdkVersionConfig.DSL_NAME, jdkVersionConfig );