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