// ----------------------------------------------------------------------------- // // This script adds support for the following two JVM system properties // that control the build for alternative JDKs (i.e., a JDK other than // the one used to launch the Gradle process). // // - customJavaHome: absolute path to the alternate JDK installation to // use to compile Java code and execute tests. This system property // is also used in spring-oxm.gradle to determine whether JiBX is // supported. // // - customJavaSourceVersion: Java version supplied to the `--release` // command line flag to control the Java source and target // compatibility version. Supported versions include 9 or higher. // Do not set this system property if Java 8 should be used. // // Examples: // // ./gradlew -DcustomJavaHome=/Library/Java/JavaVirtualMachines/jdk-14.jdk/Contents/Home test // // ./gradlew --no-build-cache -DcustomJavaHome=/Library/Java/JavaVirtualMachines/jdk-14.jdk/Contents/Home test // // ./gradlew -DcustomJavaHome=/Library/Java/JavaVirtualMachines/jdk-14.jdk/Contents/Home -DcustomJavaSourceVersion=14 test // // // Credits: inspired by work from Marc Philipp and Stephane Nicoll // // ----------------------------------------------------------------------------- import org.gradle.internal.os.OperatingSystem // import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompile def customJavaHome = System.getProperty("customJavaHome") if (customJavaHome) { def customJavaHomeDir = new File(customJavaHome) def customJavaSourceVersion = System.getProperty("customJavaSourceVersion") tasks.withType(JavaCompile) { logger.info("Java home for " + it.name + " task in " + project.name + ": " + customJavaHomeDir) options.forkOptions.javaHome = customJavaHomeDir inputs.property("customJavaHome", customJavaHome) if (customJavaSourceVersion) { options.compilerArgs += [ "--release", customJavaSourceVersion] inputs.property("customJavaSourceVersion", customJavaSourceVersion) } } tasks.withType(GroovyCompile) { logger.info("Java home for " + it.name + " task in " + project.name + ": " + customJavaHomeDir) options.forkOptions.javaHome = customJavaHomeDir inputs.property("customJavaHome", customJavaHome) if (customJavaSourceVersion) { options.compilerArgs += [ "--release", customJavaSourceVersion] inputs.property("customJavaSourceVersion", customJavaSourceVersion) } } /* tasks.withType(KotlinJvmCompile) { logger.info("Java home for " + it.name + " task in " + project.name + ": " + customJavaHome) kotlinOptions.jdkHome = customJavaHomeDir inputs.property("customJavaHome", customJavaHome) } */ tasks.withType(Test) { def javaExecutable = customJavaHome + "/bin/java" if (OperatingSystem.current().isWindows()) { javaExecutable += ".exe" } logger.info("Java executable for " + it.name + " task in " + project.name + ": " + javaExecutable) executable = javaExecutable inputs.property("customJavaHome", customJavaHome) if (customJavaSourceVersion) { inputs.property("customJavaSourceVersion", customJavaSourceVersion) } } }