maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thorsten Schöning (JIRA) <j...@apache.org>
Subject [jira] [Commented] (MJAVADOC-469) javadoc-plugin does not double backslashes in argument file
Date Wed, 06 Sep 2017 18:28:02 GMT

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

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

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
>
> 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
(v6.4.14#64029)

Mime
View raw message