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..7569dd8 100644 --- a/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java +++ b/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java @@ -8,8 +8,10 @@ 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.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -112,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 @@ -235,6 +237,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 +245,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 +271,18 @@ 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, lines); + } catch (IOException e) { + throw new RuntimeException(e); + } + return "@" + argsFile.toString(); + } + private void generateChecksums() throws NoSuchAlgorithmException, IOException { File destination = getDestination().get().getAsFile(); List allFiles = Arrays.stream(requireNonNull(destination.listFiles()))