From c0594c5bfb350b721a3d7145b7fca1e1f28fdd90 Mon Sep 17 00:00:00 2001 From: Enrico Martelli Date: Sat, 4 Oct 2025 10:59:00 +0200 Subject: [PATCH 1/2] Improve jlink task, and change how the output is logged --- .../stickerifier/stickerify/JlinkTask.java | 41 +++++++------------ 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/buildSrc/src/main/java/com/github/stickerifier/stickerify/JlinkTask.java b/buildSrc/src/main/java/com/github/stickerifier/stickerify/JlinkTask.java index 89f5f537..1ef56774 100644 --- a/buildSrc/src/main/java/com/github/stickerifier/stickerify/JlinkTask.java +++ b/buildSrc/src/main/java/com/github/stickerifier/stickerify/JlinkTask.java @@ -19,7 +19,6 @@ import javax.inject.Inject; import java.io.ByteArrayOutputStream; -import java.util.ArrayList; import java.util.List; public abstract class JlinkTask extends DefaultTask { @@ -63,49 +62,39 @@ public JlinkTask(ProjectLayout layout, JavaToolchainService javaToolchain) { public void createJre() { var installationPath = getJavaCompiler().get().getMetadata().getInstallationPath(); - var jlink = installationPath.file("bin/jlink"); - var jmods = installationPath.dir("jmods"); + var jlink = installationPath.file("bin/jlink").getAsFile(); + var jmods = installationPath.dir("jmods").getAsFile(); var jlinkOutput = getOutputDirectory().dir("jre").get().getAsFile(); getFs().delete(deleteSpec -> deleteSpec.delete(jlinkOutput)); var stdout = new ByteArrayOutputStream(); - var stderr = new ByteArrayOutputStream(); var result = getExec().exec(execSpec -> { execSpec.setIgnoreExitValue(true); - var commandLine = new ArrayList(); - commandLine.add(jlink.toString()); - commandLine.addAll(getOptions().get()); + execSpec.setCommandLine(jlink.getAbsolutePath()); + execSpec.args(getOptions().get()); + if (getIncludeModulePath().get()) { - commandLine.add("--module-path"); - commandLine.add(jmods.toString()); + execSpec.args("--module-path", jmods.getAbsolutePath()); } - commandLine.add("--add-modules"); - commandLine.add(String.join(",", getModules().get())); - commandLine.add("--output"); - commandLine.add(jlinkOutput.toString()); - execSpec.setCommandLine(commandLine); + execSpec.args("--add-modules", String.join(",", getModules().get())); + execSpec.args("--output", jlinkOutput.getAbsolutePath()); execSpec.setStandardOutput(stdout); - execSpec.setErrorOutput(stderr); + execSpec.setErrorOutput(stdout); }); - var stdoutStr = stdout.toString(); - var stderrStr = stderr.toString(); - - if (!stdoutStr.isEmpty()) { - getLogger().info(stdoutStr); + if (result.getExitValue() != 0) { + getLogger().log(LogLevel.ERROR, "jlink failed with exit code: {}", result.getExitValue()); } - if (result.getExitValue() != 0) { - if (stderrStr.isEmpty()) { - getLogger().log(LogLevel.ERROR, "jlink failed with exit code: {}", result.getExitValue()); - } else { - getLogger().log(LogLevel.ERROR, stderrStr); - } + var stdoutStr = stdout.toString(); + if (!stdoutStr.isEmpty()) { + var level = result.getExitValue() == 0 ? LogLevel.INFO : LogLevel.ERROR; + getLogger().log(level, stdoutStr); } result.assertNormalExitValue(); From 146b391c21f40009b6e5e6e7bf94962dc1170019 Mon Sep 17 00:00:00 2001 From: Enrico Martelli Date: Sat, 4 Oct 2025 11:09:32 +0200 Subject: [PATCH 2/2] Remove redundant log, ignore modified runtime --- build.gradle | 2 +- .../java/com/github/stickerifier/stickerify/JlinkTask.java | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index d91b1454..30810c01 100644 --- a/build.gradle +++ b/build.gradle @@ -41,7 +41,7 @@ updateDaemonJvm { } def jlink = tasks.register('jlink', JlinkTask) { - options = ['--strip-debug', '--no-header-files', '--no-man-pages'] + options = ['--strip-debug', '--no-header-files', '--no-man-pages', '--ignore-modified-runtime'] modules = [ 'java.instrument', // for junit 'java.naming', // for logback diff --git a/buildSrc/src/main/java/com/github/stickerifier/stickerify/JlinkTask.java b/buildSrc/src/main/java/com/github/stickerifier/stickerify/JlinkTask.java index 1ef56774..d1f3c921 100644 --- a/buildSrc/src/main/java/com/github/stickerifier/stickerify/JlinkTask.java +++ b/buildSrc/src/main/java/com/github/stickerifier/stickerify/JlinkTask.java @@ -87,10 +87,6 @@ public void createJre() { execSpec.setErrorOutput(stdout); }); - if (result.getExitValue() != 0) { - getLogger().log(LogLevel.ERROR, "jlink failed with exit code: {}", result.getExitValue()); - } - var stdoutStr = stdout.toString(); if (!stdoutStr.isEmpty()) { var level = result.getExitValue() == 0 ? LogLevel.INFO : LogLevel.ERROR;