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 4fd8cee..5cd9389 100644 --- a/graalvm/src/main/java/net/woggioni/gradle/graalvm/NativeImageConfigurationTask.java +++ b/graalvm/src/main/java/net/woggioni/gradle/graalvm/NativeImageConfigurationTask.java @@ -1,5 +1,6 @@ package net.woggioni.gradle.graalvm; +import org.gradle.api.Action; import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.ConfigurationContainer; import org.gradle.api.file.DirectoryProperty; @@ -17,6 +18,8 @@ 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 org.gradle.jvm.toolchain.JavaToolchainSpec; +import org.gradle.jvm.toolchain.internal.DefaultToolchainSpec; import org.gradle.process.CommandLineArgumentProvider; import java.util.ArrayList; @@ -35,10 +38,18 @@ public abstract class NativeImageConfigurationTask extends JavaExec { @OutputDirectory public abstract DirectoryProperty getConfigurationDir(); + private final JavaToolchainSpec toolchain; + + public JavaToolchainSpec toolchain(Action action) { + action.execute(toolchain); + return toolchain; + } + public NativeImageConfigurationTask() { setGroup(GRAALVM_TASK_GROUP); setDescription("Run the application with the native-image-agent " + "to create a configuration for native image creation"); + toolchain = getProject().getObjects().newInstance(DefaultToolchainSpec.class); ProjectLayout layout = getProject().getLayout(); TaskContainer taskContainer = getProject().getTasks(); JavaApplication javaApplication = getProject().getExtensions().findByType(JavaApplication.class); @@ -46,8 +57,8 @@ public abstract class NativeImageConfigurationTask extends JavaExec { 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); + .flatMap(ts -> Optional.of(toolchain).map(ts::launcherFor)) + .ifPresent(javaLauncherProperty::convention); if(!Objects.isNull(javaApplication)) { getMainClass().convention(javaApplication.getMainClass()); getMainModule().convention(javaApplication.getMainModule()); diff --git a/graalvm/src/main/java/net/woggioni/gradle/graalvm/NativeImagePlugin.java b/graalvm/src/main/java/net/woggioni/gradle/graalvm/NativeImagePlugin.java index cfb42f3..0337f59 100644 --- a/graalvm/src/main/java/net/woggioni/gradle/graalvm/NativeImagePlugin.java +++ b/graalvm/src/main/java/net/woggioni/gradle/graalvm/NativeImagePlugin.java @@ -74,8 +74,16 @@ public class NativeImagePlugin implements Plugin { configurations.getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME)); nativeImageExtension.getClasspath().convention(classpath); - Provider nativeImageConfigurationTaskProvider = - tasks.register(CONFIGURE_NATIVE_IMAGE_TASK_NAME, NativeImageConfigurationTask.class); + Provider nativeImageConfigurationTaskProvider = tasks.register( + CONFIGURE_NATIVE_IMAGE_TASK_NAME, + NativeImageConfigurationTask.class, + nativeImageConfigurationTask -> { + nativeImageConfigurationTask.toolchain(jts -> { + jts.getImplementation().convention(nativeImageExtension.getToolchain().getImplementation()); + jts.getVendor().convention(nativeImageExtension.getToolchain().getVendor()); + jts.getLanguageVersion().convention(nativeImageExtension.getToolchain().getLanguageVersion()); + }); + }); Provider nativeImageTaskProvider = tasks.register(NATIVE_IMAGE_TASK_NAME, NativeImageTask.class, nativeImageTask -> { nativeImageTask.getClasspath().set(nativeImageExtension.getClasspath()); diff --git a/gradle.properties b/gradle.properties index 27ad06d..d1b4295 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ lys.catalog.version=2025.02.05 -version.myGradlePlugins=2025.03.03 +version.myGradlePlugins=2025.03.08 version.gradle=8.12 gitea.maven.url = https://gitea.woggioni.net/api/packages/woggioni/maven