From 305dae4e9df379f025a4cd6d2bedc9c066750eae Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 17 Nov 2025 20:55:09 +0100 Subject: [PATCH 1/5] Write out argsFile --- .../javamodule/packaging/tasks/Jpackage.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java b/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java index 675b84e..da127e6 100644 --- a/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java +++ b/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java @@ -8,6 +8,7 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; +import java.nio.file.Path; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; @@ -235,6 +236,7 @@ private void performAppImageStep(String jpackage, Directory resourcesDir) { } private void configureJPackageArguments(ExecSpec e, Directory resourcesDir) { + String argsFile = createArgsFile(getModulePath().getAsPath()); e.args( "--module", getMainModule().get(), @@ -242,8 +244,7 @@ private void configureJPackageArguments(ExecSpec e, Directory resourcesDir) { resourcesDir.getAsFile().getPath(), "--app-version", getVersion().get(), - "--module-path", - getModulePath().getAsPath(), + argsFile, "--name", getApplicationName().get()); if (getApplicationDescription().isPresent()) { @@ -269,6 +270,16 @@ private void configureJPackageArguments(ExecSpec e, Directory resourcesDir) { } } + private String createArgsFile(String modulePathAsPath) { + Path argsFile = getTemporaryDir().toPath().resolve("args.txt"); + try { + Files.write(argsFile, List.of("--module-path " + modulePathAsPath)); + } catch (IOException e) { + return "--module-path " + modulePathAsPath; + } + return argsFile.toString(); + } + private void generateChecksums() throws NoSuchAlgorithmException, IOException { File destination = getDestination().get().getAsFile(); List allFiles = Arrays.stream(requireNonNull(destination.listFiles())) From 396213b28644c0ba7d0b353f4e758dad40dfac0e Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 17 Nov 2025 21:05:49 +0100 Subject: [PATCH 2/5] Use older Java --- .../org/gradlex/javamodule/packaging/tasks/Jpackage.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java b/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java index da127e6..10a1fc4 100644 --- a/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java +++ b/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java @@ -11,6 +11,7 @@ import java.nio.file.Path; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -272,8 +273,10 @@ private void configureJPackageArguments(ExecSpec e, Directory resourcesDir) { private String createArgsFile(String modulePathAsPath) { Path argsFile = getTemporaryDir().toPath().resolve("args.txt"); + List lines = new ArrayList<>(1); + lines.add("--module-path " + modulePathAsPath); try { - Files.write(argsFile, List.of("--module-path " + modulePathAsPath)); + Files.write(argsFile, lines); } catch (IOException e) { return "--module-path " + modulePathAsPath; } From 250d0220737ac71f0fbad4f2da5f57539ae51c5b Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 17 Nov 2025 22:13:00 +0100 Subject: [PATCH 3/5] Add forgotten @ --- .../java/org/gradlex/javamodule/packaging/tasks/Jpackage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java b/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java index 10a1fc4..f554e8d 100644 --- a/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java +++ b/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java @@ -280,7 +280,7 @@ private String createArgsFile(String modulePathAsPath) { } catch (IOException e) { return "--module-path " + modulePathAsPath; } - return argsFile.toString(); + return "@" + argsFile.toString(); } private void generateChecksums() throws NoSuchAlgorithmException, IOException { From bcf4c60cd12ef8f788751c2519de5c8597caca10 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Tue, 18 Nov 2025 09:46:50 +0100 Subject: [PATCH 4/5] Fix typo --- .../java/org/gradlex/javamodule/packaging/tasks/Jpackage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java b/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java index f554e8d..4a515fb 100644 --- a/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java +++ b/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java @@ -114,7 +114,7 @@ public abstract class Jpackage extends DefaultTask { public abstract DirectoryProperty getDestination(); /** - * To copy resources before adding them. This allows ressource filtering via Gradle + * To copy resources before adding them. This allows resource filtering via Gradle * FileCollection and FileTree APIs. */ @Internal From 1f8f8fb2ddd21c6cfd4b1f2d8ff7a15890f43875 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Tue, 18 Nov 2025 13:36:11 +0100 Subject: [PATCH 5/5] Update src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java Co-authored-by: Jendrik Johannes --- .../java/org/gradlex/javamodule/packaging/tasks/Jpackage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java b/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java index 4a515fb..7569dd8 100644 --- a/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java +++ b/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java @@ -278,7 +278,7 @@ private String createArgsFile(String modulePathAsPath) { try { Files.write(argsFile, lines); } catch (IOException e) { - return "--module-path " + modulePathAsPath; + throw new RuntimeException(e); } return "@" + argsFile.toString(); }