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

Ilya Basin commented on MJAVADOC-469:
-------------------------------------

bq. Ilya Basin, what's your opinion about this?

I think mjavadoc should change the code that writes the arguments to the 
@argfile. It was the choice of the plugin authors to use this file. For Maven 
users it should be transparent and look as if no @argfile was used.

The plugin should write the arguments array to the file doubling backslashes 
and double quoting those that contain spaces.

Additionally, while filling the arguments array the plugin should properly 
split the <additionalOptions> string treating quoted args as one and removing 
the quotes.

I found something that resembles the argfile parser. Check out the function 
nextToken() here:

http://hg.openjdk.java.net/jdk/jdk/file/53a4760e9fcc/src/java.base/share/native/libjli/args.c#l148

http://hg.openjdk.java.net/jdk/jdk/file/53a4760e9fcc/src/java.base/windows/native/libjli/cmdtoargs.c

JLI_CmdToArgs() / JLI_PreprocessArg() / expandArgFile() / readArgFile() / 
nextToken()

In short, nextToken() knows nothing about the nature of the argument it 
extracts. It just removes the quotes and the escaping.



> 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