[ 
https://issues.apache.org/jira/browse/MJAVADOC-469?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16729162#comment-16729162
 ] 

Thorsten Schöning commented on MJAVADOC-469:
--------------------------------------------

bq. How is Maven supposed to know that this is a path and not a mere string?

One might argue that the backslash is explicitly used as an escape character in 
the spec at least at two places, one is the already mentioned paths, the other 
seem to be tag names:

bq. Use of Colon in Tag Name - A colon can be used in a tag name if it is 
escaped with a backslash. For this doc comment:

https://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html#javadocoptions

bq. If a filename contains embedded spaces, put the whole filename in double 
quotes, and double each backslash ("My Files\\Stuff.java").

https://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html#argumentfiles

If the backslash is an escape character, it can not be used by itself only in 
the options files and that is the only thing one needs to take care about in 
this context. So shouldn't it be somewhat safe to simply define that if a 
backslash is not followed by another one or a colon, it needs to be doubled? 
`\\` is a valid escape sequence and `\:` is as well, all others are not.

The only problem is that it's not clearly documented this way in the spec from 
my understanding, but again one could argue that an optionally wrong `\\` in 
some arbitrary text not breaking things might be less of a problem than a not 
escaped `\` in a path breaking things or needing ugly workarounds like mine.

> 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
>            Assignee: Michael Osipov
>            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)

Reply via email to