added toolchain support to NativeImageconfigurationTask
All checks were successful
CI / build (push) Successful in 1m32s
All checks were successful
CI / build (push) Successful in 1m32s
This commit is contained in:
@@ -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<? super JavaToolchainSpec> 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<JavaLauncher> 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());
|
||||
|
@@ -74,8 +74,16 @@ public class NativeImagePlugin implements Plugin<Project> {
|
||||
configurations.getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME));
|
||||
nativeImageExtension.getClasspath().convention(classpath);
|
||||
|
||||
Provider<NativeImageConfigurationTask> nativeImageConfigurationTaskProvider =
|
||||
tasks.register(CONFIGURE_NATIVE_IMAGE_TASK_NAME, NativeImageConfigurationTask.class);
|
||||
Provider<NativeImageConfigurationTask> 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<NativeImageTask> nativeImageTaskProvider = tasks.register(NATIVE_IMAGE_TASK_NAME, NativeImageTask.class, nativeImageTask -> {
|
||||
nativeImageTask.getClasspath().set(nativeImageExtension.getClasspath());
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user