diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/MainClassModuleNameExtractor.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/MainClassModuleNameExtractor.java index 558633d..f6988f4 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/MainClassModuleNameExtractor.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/MainClassModuleNameExtractor.java @@ -78,7 +78,11 @@ public Map extract( Map files ) for ( Path p : files.values() ) { - argsWriter.append( p.toAbsolutePath().toString() ); + // make sure the path is surrounded with quotes in case there is space + argsWriter.append( '"' ); + // make sure to escape Windows paths + argsWriter.append( p.toAbsolutePath().toString().replace( "\\", "\\\\" ) ); + argsWriter.append( '"' ); argsWriter.newLine(); } } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/AbstractFilenameModuleNameExtractorTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/AbstractFilenameModuleNameExtractorTest.java index 02475c1..96e0307 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/AbstractFilenameModuleNameExtractorTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/AbstractFilenameModuleNameExtractorTest.java @@ -60,4 +60,11 @@ public void testJarUnsupported() throws Exception assertEquals( null, name ); } + @Test + public void testJarWithSpacesInPath() throws Exception + { + String name = getExtractor().extract( Paths.get( "src/test/resources/jar with spaces in path/plexus-java-1.0.0-SNAPSHOT.jar" ) ); + assertEquals( "org.codehaus.plexus.languages.java", name ); + } + } diff --git a/plexus-java/src/test/resources/jar with spaces in path/plexus-java-1.0.0-SNAPSHOT.jar b/plexus-java/src/test/resources/jar with spaces in path/plexus-java-1.0.0-SNAPSHOT.jar new file mode 100644 index 0000000..f68d9c3 Binary files /dev/null and b/plexus-java/src/test/resources/jar with spaces in path/plexus-java-1.0.0-SNAPSHOT.jar differ