[ https://issues.apache.org/jira/browse/MJAVADOC-469?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16155839#comment-16155839 ]
Thorsten Schöning edited comment on MJAVADOC-469 at 6/4/18 6:43 AM: -------------------------------------------------------------------- Here's a possible workaround for others having the same problem. It's basically doubling the available backslashes on it's own before forwarding the path as a command line arg. This needs to be done before the path is used by the Maven plugin and written to the argument file, afterwards it's too late. After Javadoc parsed the paths one can't reconstruct the path anymore because the single backslashes just disappear if they have no special meaning in front of character. While "\t" becomes a tab, "\U" just becomes "U" for Javadoc. {CODE} <plugins> <!-- https://issues.apache.org/jira/browse/MJAVADOC-469 --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <executions> <execution> <id>create-javadoc-compat-out-dir</id> <phase>pre-site</phase> <goals> <goal>regex-property</goal> </goals> <configuration> <name>javadoc-compat-out-dir</name> <value>${project.build.directory}</value> <regex>\\</regex> <replacement>\\\\</replacement> <failIfNoMatch>false</failIfNoMatch> </configuration> </execution> </executions> </plugin> <plugin> <artifactId>maven-javadoc-plugin</artifactId> <executions> <execution> <id>extract-resource-info</id> <phase>pre-site</phase> <goals> <goal>javadoc</goal> </goals> <configuration> <docletArtifacts> <docletArtifact> <groupId>${project.groupId}</groupId> <artifactId>axis2-transport-testkit</artifactId> <version>${project.version}</version> </docletArtifact> </docletArtifacts> <doclet>org.apache.axis2.transport.testkit.doclet.ResourceInfoDoclet</doclet> <useStandardDocletOptions>false</useStandardDocletOptions> <show>private</show> <additionalparam>-out "${javadoc-compat-out-dir}/resource-info.dat"</additionalparam> </configuration> </execution> [...] </plugin> [...] </plugins> {CODE} was (Author: tschoening): Here's a possible workaround for others having the same problem. It's basically doubling the available backslashes on it's own before forwarding the path as a command line arg. This needs to be done before the path is used by the Maven plugin and written to the argument file, afterwards it's too late. After Javadoc parsed the paths one can't reconstruct the path anymore because the single backslashes just disappear if they have no special meaning in front of character. While "\t" becomes a tab, "\U" just becomes "U" for Javadoc. {CODE} <plugins> <!-- https://issues.apache.org/jira/browse/MJAVADOC-469 --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <executions> <execution> <id>create-javadoc-compat-out-dir</id> <phase>pre-site</phase> <goals> <goal>regex-property</goal> </goals> <configuration> <name>javadoc-compat-out-dir</name> <value>${project.build.directory}</value> <regex>\\</regex> <replacement>\\\\</replacement> <failIfNoMatch>true</failIfNoMatch> </configuration> </execution> </executions> </plugin> <plugin> <artifactId>maven-javadoc-plugin</artifactId> <executions> <execution> <id>extract-resource-info</id> <phase>pre-site</phase> <goals> <goal>javadoc</goal> </goals> <configuration> <docletArtifacts> <docletArtifact> <groupId>${project.groupId}</groupId> <artifactId>axis2-transport-testkit</artifactId> <version>${project.version}</version> </docletArtifact> </docletArtifacts> <doclet>org.apache.axis2.transport.testkit.doclet.ResourceInfoDoclet</doclet> <useStandardDocletOptions>false</useStandardDocletOptions> <show>private</show> <additionalparam>-out "${javadoc-compat-out-dir}/resource-info.dat"</additionalparam> </configuration> </execution> [...] </plugin> [...] </plugins> {CODE} > javadoc-plugin does not double backslashes in argument file > ----------------------------------------------------------- > > Key: MJAVADOC-469 > URL: https://issues.apache.org/jira/browse/MJAVADOC-469 > Project: Maven Javadoc Plugin > Issue Type: Bug > Components: javadoc > Affects Versions: 2.10.4 > Reporter: Ilya Basin > Priority: Major > > On Windows `generate-rest-docs` goal of `maven-jira-plugin` calls > `maven-javadoc-plugin` with: > {code}additionalparam: -output > "C:\path\to\target\classes\resourcedoc.xml"{code} > If this argument was passed to `javadoc.exe` directly, I'm pretty sure this > would work. However, the javadoc plugin generates an argument file[1] named > "options" and executes: > {code}javadoc.exe ... @options{code} > The file contains all arguments with unescaped backslashes, although javadoc > command documentation[2] suggests: > {quote}If a filename contains embedded spaces, put the whole filename in > double quotes, and double each backslash ("My Files\\Stuff.java"){quote} > javadoc plugin version "2.4" is hardcoded in jira plugin, but I see no > related changes in "2.10.4" in AbstractJavadocMojo.addCommandLineOptions() . > [1]: https://maven.apache.org/plugins/maven-javadoc-plugin/ > [2]: > http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html#argumentfiles -- This message was sent by Atlassian JIRA (v7.6.3#76005)