Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
3.4.0
-
All
Description
The javadoc build phase fails with the following error -
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:3.0.1:javadoc-no-fork (default-cli) on project hadoop-common: An error has occurred in Javadoc report generation: Unable to write 'options' temporary file for command execution: H:\hadoop-common-project\hadoop-common\target\site\H:\hadoop-common-project\hadoop-common\target\api\options (The filename, directory name, or volume label syntax is incorrect) -> [Help 1]
As called out by the error message the path H:\hadoop-common-project\hadoop-common\target\site\H:\hadoop-common-project\hadoop-common\target\api\options is invalid.
The culprit being - https://github.com/apache/hadoop/blob/e9740cb17aef157a615dc36ae08cd224ce1672f0/hadoop-project-dist/pom.xml#L109
<reportOutputDirectory>${project.build.directory}/site</reportOutputDirectory> <destDir>${project.build.directory}/api</destDir>
As per the docs from maven-javadoc-plugin, destDir attribute's value gets appended to that of reportOutputDirectory. This implies that destDir must be a relative path, although not called out in the documentation. Since this isn't the case here,
- In Linux, this yields an unintended path (albeit a valid one) and doesn't fail.
- In Windows, it yields an incorrect path and thus fails since there's a colon ( : ) for the drive letter in the middle of the incorrectly concatenated path -
H:\hadoop-common-project\hadoop-common\target\site\H : \hadoop-common-project\hadoop-common\target\api\options
Thus, fixing this would fix the build failure on Windows and put the docs in the appropriate directory in Linux.
Attachments
Issue Links
- links to