[
https://issues.apache.org/jira/browse/MJAVADOC-469?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16729162#comment-16729162
]
Thorsten Schöning edited comment on MJAVADOC-469 at 12/27/18 11:39 AM:
-----------------------------------------------------------------------
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.
was (Author: tschoening):
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)