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 2cb0d7d..3f7b174 100644 --- a/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java +++ b/src/main/java/org/gradlex/javamodule/packaging/tasks/Jpackage.java @@ -276,7 +276,7 @@ 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); + lines.add("--module-path \"" + modulePathAsPath.replace('\\', '/') + "\""); try { Files.write(argsFile, lines); } catch (IOException e) { diff --git a/src/test/java/org/gradlex/javamodule/packaging/test/JavaModulePackagingOptionsTest.java b/src/test/java/org/gradlex/javamodule/packaging/test/JavaModulePackagingOptionsTest.java index 0ff1b5e..3156861 100644 --- a/src/test/java/org/gradlex/javamodule/packaging/test/JavaModulePackagingOptionsTest.java +++ b/src/test/java/org/gradlex/javamodule/packaging/test/JavaModulePackagingOptionsTest.java @@ -189,4 +189,20 @@ void can_build_package_in_one_step() { assertThat(build.appImageFolder().getAsPath()) .isDirectoryNotContaining(f -> f.toFile().isDirectory()); } + + @Test + void works_if_module_path_contains_spaces() { + var lib2BuildFile = build.file("lib 2 with spaces/build.gradle.kts"); + var lib2ModuleInfoFile = build.file("lib 2 with spaces/src/main/java/module-info.java"); + + build.settingsFile.appendText(""" + include(":lib2") + project(":lib2").projectDir = file("lib 2 with spaces") + """); + build.appBuildFile.appendText("dependencies { implementation(project(\":lib2\")) }"); + lib2BuildFile.writeText("plugins { id(\"java-library\") }"); + lib2ModuleInfoFile.writeText("module org.example.libtwo { }"); + + build.build(":app:jpackage"); + } }