From e1028249ae522ecd70d54c36438ba227b2dc7ebf Mon Sep 17 00:00:00 2001 From: Walter Oggioni Date: Fri, 20 Oct 2023 20:58:57 +0800 Subject: [PATCH] added Gradle toolchain support to `NativeImageConfigurationTask` --- .../gradle/graalvm/NativeImageConfigurationTask.java | 11 +++++++++++ gradle.properties | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/graalvm/src/main/java/net/woggioni/gradle/graalvm/NativeImageConfigurationTask.java b/graalvm/src/main/java/net/woggioni/gradle/graalvm/NativeImageConfigurationTask.java index 4f05d02..39a7ff6 100644 --- a/graalvm/src/main/java/net/woggioni/gradle/graalvm/NativeImageConfigurationTask.java +++ b/graalvm/src/main/java/net/woggioni/gradle/graalvm/NativeImageConfigurationTask.java @@ -4,13 +4,18 @@ import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.ConfigurationContainer; import org.gradle.api.file.DirectoryProperty; import org.gradle.api.file.ProjectLayout; +import org.gradle.api.plugins.ExtensionContainer; import org.gradle.api.plugins.JavaApplication; import org.gradle.api.plugins.JavaPlugin; +import org.gradle.api.plugins.JavaPluginExtension; +import org.gradle.api.provider.Property; import org.gradle.api.provider.Provider; import org.gradle.api.tasks.JavaExec; import org.gradle.api.tasks.OutputDirectory; import org.gradle.api.tasks.TaskContainer; import org.gradle.api.tasks.bundling.Jar; +import org.gradle.jvm.toolchain.JavaLauncher; +import org.gradle.jvm.toolchain.JavaToolchainService; import java.util.ArrayList; import java.util.Collections; @@ -33,6 +38,12 @@ public abstract class NativeImageConfigurationTask extends JavaExec { ProjectLayout layout = getProject().getLayout(); TaskContainer taskContainer = getProject().getTasks(); JavaApplication javaApplication = getProject().getExtensions().findByType(JavaApplication.class); + JavaPluginExtension javaExtension = getProject().getExtensions().getByType(JavaPluginExtension.class); + ExtensionContainer ext = getProject().getExtensions(); + Property javaLauncherProperty = getJavaLauncher(); + Optional.ofNullable(ext.findByType(JavaToolchainService.class)) + .flatMap(ts -> Optional.ofNullable(javaExtension.getToolchain()).map(ts::launcherFor)) + .ifPresent(javaLauncherProperty::set); if(!Objects.isNull(javaApplication)) { getMainClass().convention(javaApplication.getMainClass()); getMainModule().convention(javaApplication.getMainModule()); diff --git a/gradle.properties b/gradle.properties index 590de1c..d777abd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ woggioniMavenRepositoryUrl=https://mvn.woggioni.net/ lys.catalog.version=2023.10.01 -version.myGradlePlugins=2023.10.06 +version.myGradlePlugins=2023.10.20 version.gradle=7.6 version.felix.config.admin=1.9.26 version.felix=7.0.5