improved GraalVM plugin
CI / build (push) Successful in 2m31s

This commit is contained in:
2026-06-10 08:40:07 +08:00
parent 6dc946d71b
commit 40b18c99c2
5 changed files with 27 additions and 8 deletions
@@ -58,9 +58,10 @@ public abstract class NativeImageConfigurationTask extends JavaExec {
JavaPluginExtension javaExtension = getProject().getExtensions().getByType(JavaPluginExtension.class);
ExtensionContainer ext = getProject().getExtensions();
Property<JavaLauncher> javaLauncherProperty = getJavaLauncher();
Optional.ofNullable(ext.findByType(JavaToolchainService.class))
.flatMap(ts -> Optional.of(toolchain).map(ts::launcherFor))
.ifPresent(javaLauncherProperty::convention);
javaLauncherProperty.set(getProject().provider(() -> Optional.of(toolchain).orElseGet(javaExtension::getToolchain)).flatMap(toolchainSpec -> {
final JavaToolchainService jts = ext.findByType(JavaToolchainService.class);
return jts.launcherFor(toolchainSpec);
}));
if(!Objects.isNull(javaApplication)) {
getMainClass().convention(javaApplication.getMainClass());
getMainModule().convention(javaApplication.getMainModule());
@@ -2,7 +2,9 @@ package net.woggioni.gradle.graalvm;
import org.gradle.api.Action;
import org.gradle.api.file.FileCollection;
import org.gradle.api.provider.ListProperty;
import org.gradle.api.provider.Property;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.Nested;
import org.gradle.jvm.toolchain.JavaToolchainSpec;
@@ -15,6 +17,7 @@ public interface NativeImageExtension {
JavaToolchainSpec toolchain(Action<? super JavaToolchainSpec> action);
ListProperty<String> getJvmArgs();
Property<Boolean> getUseMusl();
Property<Boolean> getBuildStaticImage();
Property<Boolean> getEnableFallback();
@@ -28,5 +31,7 @@ public interface NativeImageExtension {
Property<Boolean> getUseLZMA();
Property<Boolean> getVerbose();
Property<Integer> getCompressionLevel();
}
@@ -15,8 +15,6 @@ import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.TaskContainer;
import org.gradle.jvm.tasks.Jar;
import org.gradle.jvm.toolchain.JavaToolchainSpec;
import org.gradle.jvm.toolchain.internal.DefaultToolchainSpec;
@CacheableTask
public class NativeImagePlugin implements Plugin<Project> {
@@ -93,9 +91,11 @@ public class NativeImagePlugin implements Plugin<Project> {
jts.getLanguageVersion().convention(nativeImageExtension.getToolchain().getLanguageVersion());
});
nativeImageTask.getJvmArgs().set(nativeImageExtension.getJvmArgs());
nativeImageTask.getBuildStaticImage().set(nativeImageExtension.getBuildStaticImage());
nativeImageTask.getUseMusl().set(nativeImageExtension.getUseMusl());
nativeImageTask.getLinkAtBuildTime().set(nativeImageExtension.getLinkAtBuildTime());
nativeImageTask.getLinkAtBuildTime().set(nativeImageExtension.getVerbose());
nativeImageTask.getMainClass().set(nativeImageExtension.getMainClass());
nativeImageTask.getMainModule().set(nativeImageExtension.getMainModule());
nativeImageTask.getEnableFallback().set(nativeImageExtension.getEnableFallback());
@@ -13,6 +13,7 @@ import org.gradle.api.model.ObjectFactory;
import org.gradle.api.plugins.BasePluginExtension;
import org.gradle.api.plugins.ExtensionContainer;
import org.gradle.api.plugins.JavaApplication;
import org.gradle.api.provider.ListProperty;
import org.gradle.api.provider.Property;
import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.CacheableTask;
@@ -65,6 +66,8 @@ public abstract class NativeImageTask extends Exec {
@PathSensitive(PathSensitivity.ABSOLUTE)
public abstract RegularFileProperty getNativeCompilerPath();
@Input
public abstract ListProperty<String> getJvmArgs();
@Input
public abstract Property<Boolean> getUseMusl();
@Input
@@ -73,7 +76,8 @@ public abstract class NativeImageTask extends Exec {
public abstract Property<Boolean> getEnableFallback();
@Input
public abstract Property<Boolean> getLinkAtBuildTime();
@Input
public abstract Property<Boolean> getVerbose();
@Input
public abstract Property<String> getMainClass();
@@ -143,6 +147,12 @@ public abstract class NativeImageTask extends Exec {
@Override
public Iterable<String> asArguments() {
List<String> result = new ArrayList<>();
if(getJvmArgs().isPresent()) {
final List<String> jvmArgs = getJvmArgs().get();
for(final String arg : jvmArgs) {
result.add("-J" + arg);
}
}
if(!getEnableFallback().get()) {
result.add("--no-fallback");
}
@@ -155,6 +165,9 @@ public abstract class NativeImageTask extends Exec {
if(getLinkAtBuildTime().get()) {
result.add("--link-at-build-time");
}
if(getVerbose().get()) {
result.add("--verbose");
}
if(getNativeCompilerPath().isPresent()) {
result.add("--native-compiler-path=" + getNativeCompilerPath().getAsFile().get());
}
+2 -2
View File
@@ -1,5 +1,5 @@
lys.catalog.version=2026.05.27
version.myGradlePlugins=2026.06.07
lys.catalog.version=2026.06.08
version.myGradlePlugins=2026.06.09
version.gradle=8.14.5
gitea.maven.url = https://gitea.woggioni.net/api/packages/woggioni/maven