You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2019/02/17 12:50:17 UTC

[maven-javadoc-plugin] branch MJAVADOC-469 updated (5d13d3e -> 10ed96a)

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a change to branch MJAVADOC-469
in repository https://gitbox.apache.org/repos/asf/maven-javadoc-plugin.git.


 discard 5d13d3e  Prototype
     add b9d08e9  Refactor Strings to Paths
     add 4cb073c  Clarify handling of additionalOptions
     add 5bb92b7  [MJAVADOC-452] Support duplicate @param entries
     add 8e6622f  Push version to 3.1.0
     add 9e86675  [MJAVADOC-552] Author tag is removed
     add a65044b  Remove @version $Id:
     add 1b7d362  [MJAVADOC-558] Change default value for removeUnknownThrows to true
     add 0f0f9d4  [MJAVADOC-557] Deprecate parameter includeTransitiveDependencySources
     add 924733e  Cleanup ITs
     add b6956ea  Add trailing slash to avoid redirect
     add 34fccfb  [MJAVADOC-527] detectLinks may pass invalid URLs to javadoc(1)
     add c3e96e6  [MJAVADOC-555] Javadoc:aggregate, Javadoc:jar fail if one of the modules does not contain module-info.java
     add babbc70  [MJAVADOC-563] Javadoc generation fails if module name contains restricted keyword in non-terminal position Update QDox to 2.0-M10
     add fc6fdcd  [MJAVADOC-562] Ability to pass --release to Javadoc tool
     add 193ff34  [MJAVADOC-566] Use patterns for defaultJavadocApiLinks
     add 80697ad  [MJAVADOC-444] add aggregate-no-fork and aggregate-test-no-fork for non-forking versions of aggregate goals.
     add 16aeaaf  [MJAVADOC-444] add aggregate-no-fork and aggregate-test-no-fork for non-forking versions of aggregate goals.
     add 1db2917  Support Java 12
     add 7613750  [MJAVADOC-567] "Not in a module on the module source path" when using JDK 12
     add 928ef16  javadoc:aggregate fails with 'error: package org.w3c.dom is not visible' when mixing Java modules and non-modules
     add 8e7b265  [MJAVADOC-568] javadoc:jar fails when project has Automatic-Module-Name and (implicit) uses offlinelinks with element-list
     add 9761d15  Avoid converting separator characters into newline. Updated testCustomConfiguration() because JDK 11.0.2 behaves the same as JDK 12.
     add c2681a4  [MJAVADOC-570] --add-modules expects comma-separated arguments
     add 0c0b08b  [MJAVADOC-568] javadoc:jar fails when project has Automatic-Module-Name and (implicit) uses offlinelinks with element-list
     add 1fe0654  [MJAVADOC-575] <source>8</source> fails when module-info.java exists
     add 80c796e  Fix javadoc upgrade maven-jxr-plugin
     add 22020ee  [MJAVADOC-577] Modified the Wrong closing tag
     add 19db8e2  [MJAVADOC-577] Fixed typos in User Guide.
     add 9df315c  Add GitHub pull requests template (copied from Maven Enforcer plugin)
     add bb50d3e  [MJAVADOC-578] Groups parameter is not compatibile with Surefire
     add f09e0c8  [MJAVADOC-568] javadoc:jar fails when project has Automatic-Module-Name and (implicit) uses offlinelinks with element-list Reduce change of split packages
     add 5250cba  [MJAVADOC] Improve split package issue with Manifest base modules.
     new 10ed96a  [MJAVADOC-469] <additionalOption> input isn't escaped for double backslashes in argument file

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (5d13d3e)
            \
             N -- N -- N   refs/heads/MJAVADOC-469 (10ed96a)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .github/pull_request_template.md                   |  28 +
 Jenkinsfile                                        |   2 +-
 pom.xml                                            |  13 +-
 src/it/projects/MJAVADOC-325/invoker.properties    |   4 +
 src/it/projects/MJAVADOC-384/pom.xml               |   6 +-
 src/it/projects/MJAVADOC-407/pom.xml               |   6 +-
 src/it/projects/MJAVADOC-420_fixparam/pom.xml      |  27 +-
 .../invoker.properties                             |  36 +-
 .../test-module1 => MJAVADOC-444/moduleA}/pom.xml  |  81 +-
 .../src/main/java/com/mycompany/myapp/AppA.java}   |  60 +-
 .../test/java/com/mycompany/myapp/AppATest.java}   |  12 +-
 .../test-module1 => MJAVADOC-444/moduleB}/pom.xml  |  81 +-
 .../src/main/java/com/mycompany/myapp/AppB.java}   |  60 +-
 .../test/java/com/mycompany/myapp/AppBTest.java}   |  12 +-
 .../{MJAVADOC-369 => MJAVADOC-444}/pom.xml         |  20 +-
 .../{MJAVADOC-369 => MJAVADOC-444}/verify.bsh      |  80 +-
 .../invoker.properties                             |  36 +-
 .../pom.xml                                        |  19 +-
 .../src/main/java/com/example/FirstBug.java        |   4 +-
 .../verify.groovy                                  |   5 +-
 .../invoker.properties                             |  36 +-
 .../pom.xml                                        |  21 +-
 .../src/main/java/com/example/FirstBug.java}       |  66 +-
 .../verify.groovy                                  |   5 +-
 .../invoker.properties                             |   1 +
 .../module1}/pom.xml                               |  28 +-
 .../module1/src/main/java/module-info.java}        |   5 +-
 .../module1/src/main/java/module1/Main.java}       |   7 +-
 .../module2}/pom.xml                               |  34 +-
 .../module2/src/main/java/module2/Main.java}       |   7 +-
 .../pom.xml                                        | 138 ++-
 .../verify.groovy                                  |  16 +-
 .../invoker.properties                             |   1 +
 .../pom.xml                                        | 135 +--
 .../src/main/java/com/testcase/Testcase.java}      |  64 +-
 .../src/main/java/module-info.java}                |   7 +-
 .../verify.groovy                                  |  18 +-
 .../module/pom.xml                                 |   3 +-
 .../invoker.properties                             |  36 +-
 .../pom.xml                                        |  21 +-
 .../src/main/java/com/example/FirstBug.java        |   6 +-
 .../verify.groovy                                  |   5 +-
 .../invoker.properties                             |  38 +-
 .../pom.xml                                        |  20 +-
 .../src/main/java/com/foo/MyClass.java}            |  11 +-
 .../invoker.properties                             |  38 +-
 .../module1}/pom.xml                               |  28 +-
 .../module1/src/main/java/module-info.java}        |   5 +-
 .../module1/src/main/java/module1/Main.java}       |   7 +-
 .../module2}/pom.xml                               |  65 +-
 .../module2/src/main/java/module2/Main.java}       |   7 +-
 .../pom.xml                                        | 138 ++-
 .../verify.groovy                                  |  17 +-
 .../invoker.properties                             |   1 +
 .../module1/pom.xml}                               |  22 +-
 .../module1/src/main/java/module-info.java}        |   6 +-
 .../module1/src/main/java/module1/Module1.java}    |  11 +-
 .../module2/pom.xml                                |  91 ++
 .../module2/src/main/java/module2/Module2.java}    |  53 +-
 .../pom.xml                                        |  46 +-
 .../invoker.properties                             |   2 +-
 .../module1}/pom.xml                               |  41 +-
 .../module1/src/main/java/module-info.java}        |   4 +-
 .../module1/src/main/java/module1/Module1.java}    |   7 +-
 .../module2}/pom.xml                               | 130 +--
 .../module2/src/main/java/module2/Module2.java}    |  12 +-
 .../pom.xml                                        |  37 +-
 .../invoker.properties                             |   2 +-
 .../java-module}/pom.xml                           |  66 +-
 .../java-module/src/main/java/module-info.java}    |   7 +-
 .../src/main/java/normal/Testcase.java}            |  10 +-
 .../mojo/pom.xml                                   |  72 ++
 .../mojo/src/main/java/mojo/TestcaseMojo.java}     |  83 +-
 .../pom.xml                                        |  50 +-
 .../invoker.properties                             |   2 +-
 .../module1}/pom.xml                               |  64 +-
 .../module1/src/main/java/module-info.java}        |   6 +-
 .../module1/src/main/java/module1/Module1.java}    |   8 +-
 .../MJAVADOC-569_aggr-mixed/module2/pom.xml        |  87 ++
 .../module2/src/main/java/module2/Module2.java}    |  66 +-
 .../pom.xml                                        |  51 +-
 .../invoker.properties                             |   3 +-
 .../pom.xml                                        |   8 +-
 .../src/main/java/com/foo/MyClass.java             |   0
 .../src/main/java/module-info.java                 |   0
 .../verify.groovy}                                 |   9 +-
 .../plugins/javadoc/AbstractFixJavadocMojo.java    |  68 +-
 .../maven/plugins/javadoc/AbstractJavadocMojo.java | 950 ++++++++++++++-------
 .../plugins/javadoc/AggregatorJavadocJar.java      |   1 -
 ...ojo.java => AggregatorJavadocNoForkReport.java} |  81 +-
 .../plugins/javadoc/AggregatorJavadocReport.java   |   1 -
 .../plugins/javadoc/AggregatorTestJavadocJar.java  |   1 -
 ...java => AggregatorTestJavadocNoForkReport.java} |  81 +-
 .../javadoc/AggregatorTestJavadocReport.java       |   1 -
 .../maven/plugins/javadoc/FixJavadocMojo.java      |   1 -
 .../apache/maven/plugins/javadoc/JavadocJar.java   |   1 -
 .../maven/plugins/javadoc/JavadocNoForkReport.java |   1 -
 .../maven/plugins/javadoc/JavadocReport.java       |   8 +-
 .../apache/maven/plugins/javadoc/JavadocUtil.java  |  84 +-
 .../maven/plugins/javadoc/TestFixJavadocMojo.java  |   1 -
 .../maven/plugins/javadoc/TestJavadocJar.java      |   1 -
 .../plugins/javadoc/TestJavadocNoForkReport.java   |   1 -
 .../maven/plugins/javadoc/TestJavadocReport.java   |   1 -
 .../plugins/javadoc/resolver/ResourceResolver.java |  34 +-
 ...vadoc-nofork.apt.vm => aggregate-nofork.apt.vm} |  26 +-
 src/site/apt/examples/aggregate.apt.vm             |  59 +-
 src/site/apt/examples/javadoc-nofork.apt.vm        |   3 +-
 src/site/apt/index.apt.vm                          |  20 +-
 src/site/apt/usage.apt.vm                          |   2 +-
 src/site/site.xml                                  |   1 +
 .../plugins/javadoc/AbstractJavadocMojoTest.java   |  15 +-
 .../maven/plugins/javadoc/FixJavadocMojoTest.java  |  22 +-
 .../maven/plugins/javadoc/JavadocReportTest.java   |  31 +-
 .../maven/plugins/javadoc/JavadocUtilTest.java     |  12 +-
 .../apache/maven/plugins/javadoc/ProxyServer.java  |   1 -
 .../AggregateProject1TestMavenProjectStub.java     |   3 +-
 .../AggregateProject2TestMavenProjectStub.java     |   3 +-
 ...egateResourcesProject1TestMavenProjectStub.java |   1 -
 ...egateResourcesProject2TestMavenProjectStub.java |   1 -
 .../AggregateResourcesTestMavenProjectStub.java    |   9 +-
 .../stubs/AggregateTestMavenProjectStub.java       |  10 +-
 .../stubs/CustomConfigurationMavenProjectStub.java |   1 -
 .../javadoc/stubs/DefaultArtifactHandlerStub.java  |   1 -
 .../DefaultConfigurationMavenProjectStub.java      |   3 +-
 .../stubs/DocfilesTestMavenProjectStub.java        |   3 +-
 .../DocfilesWithJavaTestMavenProjectStub.java      |   1 -
 .../stubs/DocletPathTestMavenProjectStub.java      |   1 -
 .../javadoc/stubs/DocletTestMavenProjectStub.java  |   1 -
 .../javadoc/stubs/FixJdk5MavenProjectStub.java     |   1 -
 .../javadoc/stubs/FixJdk6MavenProjectStub.java     |   1 -
 .../plugins/javadoc/stubs/FixMavenProjectStub.java |   1 -
 .../stubs/HeaderFooterTestMavenProjectStub.java    |   1 -
 .../javadoc/stubs/HelpFileMavenProjectStub.java    |   1 -
 .../stubs/JavadocJarArchiveConfigProjectStub.java  |   2 +-
 .../stubs/JavadocJarDefaultMavenProjectStub.java   |   3 +-
 .../JavadocJarFailOnErrorMavenProjectStub.java     |   3 +-
 .../JavadocJarInvalidDestdirMavenProjectStub.java  |   4 +-
 .../javadoc/stubs/JavadocPluginArtifactStub.java   |   1 -
 .../javadoc/stubs/Jdk5TestMavenProjectStub.java    |   1 -
 .../javadoc/stubs/Jdk6TestMavenProjectStub.java    |   1 -
 .../javadoc/stubs/NewlineTestMavenProjectStub.java |   1 -
 .../OptionsUmlautEncodingMavenProjectStub.java     |   2 +-
 .../plugins/javadoc/stubs/PomMavenProjectStub.java |   1 -
 .../javadoc/stubs/ProxyTestMavenProjectStub.java   |   1 -
 .../javadoc/stubs/QuotedPathMavenProjectStub.java  |   3 +-
 .../stubs/ResourcesTestMavenProjectStub.java       |   1 -
 .../ResourcesWithExcludesTestMavenProjectStub.java |   1 -
 .../maven/plugins/javadoc/stubs/SettingsStub.java  |   1 -
 ...dDocletConflictOptionsTestMavenProjectStub.java |   1 -
 .../stubs/StylesheetFileMavenProjectStub.java      |   1 -
 .../stubs/SubpackagesTestMavenProjectStub.java     |   3 +-
 .../javadoc/stubs/TagTestMavenProjectStub.java     |   1 -
 .../stubs/TagletArtifactsMavenProjectStub.java     |   1 -
 .../javadoc/stubs/TagletTestMavenProjectStub.java  |   3 +-
 .../javadoc/stubs/TestJavadocMavenProjectStub.java |   1 -
 .../WrongEncodingOptionsTestMavenProjectStub.java  |   1 -
 .../aggregate-resources-test-plugin-config.xml     |   1 +
 .../aggregate-test-plugin-config.xml               |   1 +
 .../custom-configuration-plugin-config.xml         |   3 +
 .../unit/custom-configuration/element-list}        |   0
 .../default-configuration-plugin-config.xml        |   3 +
 .../docfiles-test/docfiles-test-plugin-config.xml  |   3 +
 .../docfiles-with-java-test-plugin-config.xml      |   3 +
 .../doclet-path-test-plugin-config.xml             |   3 +
 .../unit/doclet-test/doclet-test-plugin-config.xml |   3 +
 .../file-include-exclude-plugin-config.xml         |   3 +
 .../header-footer-test-plugin-config.xml           |   3 +
 src/test/resources/unit/helpfile-test/pom.xml      |   3 +
 .../javaHome-test/javaHome-test-plugin-config.xml  |   3 +
 .../javadocjar-archive-config.xml                  |   3 +
 .../javadocjar-default-plugin-config.xml           |   3 +
 .../javadocjar-failonerror-plugin-config.xml       |   3 +
 .../javadocjar-invalid-destdir-plugin-config.xml   |   3 +
 .../unit/jdk5-test/jdk5-test-plugin-config.xml     |   3 +
 .../unit/jdk6-test/jdk6-test-plugin-config.xml     |   3 +
 .../newline-test/newline-test-plugin-config.xml    |   3 +
 .../optionsumlautencoding-test-plugin-config.xml   |   3 +
 .../unit/proxy-test/proxy-test-plugin-config.xml   |   3 +
 .../quotedpath-test-plugin-config.xml              |   3 +
 .../resources-test-plugin-config.xml               |   3 +
 .../resources-with-excludes-test-plugin-config.xml |   3 +
 .../resources/unit/stylesheetfile-test/pom.xml     |   3 +
 .../subpackages-test-plugin-config.xml             |   3 +
 .../unit/tag-test/tag-test-plugin-config.xml       |   3 +
 .../unit/taglet-test/taglet-test-plugin-config.xml |   3 +
 .../tagletArtifacts-test-plugin-config.xml         |   3 +
 .../test-javadoc-test-plugin-config.xml            |   3 +
 ...rong-locale-with-variant-test-plugin-config.xml |   3 +
 188 files changed, 2539 insertions(+), 1823 deletions(-)
 create mode 100644 .github/pull_request_template.md
 copy src/it/projects/{MJAVADOC-369 => MJAVADOC-444}/invoker.properties (97%)
 copy src/it/projects/{MJAVADOC-172/test-module1 => MJAVADOC-444/moduleA}/pom.xml (86%)
 copy src/it/projects/{site-failOnError/src/main/java/App.java => MJAVADOC-444/moduleA/src/main/java/com/mycompany/myapp/AppA.java} (95%)
 copy src/{test/resources/unit/pom-test/src/test/java/maven/AppTest.java => it/projects/MJAVADOC-444/moduleA/src/test/java/com/mycompany/myapp/AppATest.java} (90%)
 copy src/it/projects/{MJAVADOC-172/test-module1 => MJAVADOC-444/moduleB}/pom.xml (86%)
 copy src/it/projects/{site-failOnError/src/main/java/App.java => MJAVADOC-444/moduleB/src/main/java/com/mycompany/myapp/AppB.java} (95%)
 copy src/{test/resources/unit/pom-test/src/test/java/maven/AppTest.java => it/projects/MJAVADOC-444/moduleB/src/test/java/com/mycompany/myapp/AppBTest.java} (90%)
 copy src/it/projects/{MJAVADOC-369 => MJAVADOC-444}/pom.xml (88%)
 copy src/it/projects/{MJAVADOC-369 => MJAVADOC-444}/verify.bsh (94%)
 copy src/it/projects/{MJAVADOC-181 => MJAVADOC-452_fix-duplicateparams}/invoker.properties (94%)
 copy src/it/projects/{MJAVADOC-495_offline-filescheme => MJAVADOC-452_fix-duplicateparams}/pom.xml (77%)
 copy src/it/projects/{MJAVADOC-420_fixparam => MJAVADOC-452_fix-duplicateparams}/src/main/java/com/example/FirstBug.java (89%)
 copy src/it/projects/{MJAVADOC-420_fixparam => MJAVADOC-452_fix-duplicateparams}/verify.groovy (80%)
 copy src/it/projects/{MJAVADOC-181 => MJAVADOC-552_fix-author}/invoker.properties (94%)
 copy src/it/projects/{MJAVADOC-495_offline-filescheme => MJAVADOC-552_fix-author}/pom.xml (76%)
 copy src/it/projects/{MJAVADOC-137/test2/src/main/java/com/example/App.java => MJAVADOC-552_fix-author/src/main/java/com/example/FirstBug.java} (81%)
 copy src/it/projects/{MJAVADOC-420_fixparam => MJAVADOC-552_fix-author}/verify.groovy (84%)
 copy src/it/projects/{MJAVADOC-498_aggr_modulepath => MJAVADOC-555_aggr_mixed}/invoker.properties (95%)
 copy src/it/projects/{MJAVADOC-556_hide-non-exported-packages/module => MJAVADOC-555_aggr_mixed/module1}/pom.xml (62%)
 copy src/it/projects/{MJAVADOC-134_multiaggregate/f/src/main/java/a/f/F.java => MJAVADOC-555_aggr_mixed/module1/src/main/java/module-info.java} (95%)
 copy src/it/projects/{MJAVADOC-134_multiaggregate/b/e/src/main/java/a/b/e/E.java => MJAVADOC-555_aggr_mixed/module1/src/main/java/module1/Main.java} (94%)
 copy src/it/projects/{MJAVADOC-495_offline-filescheme => MJAVADOC-555_aggr_mixed/module2}/pom.xml (62%)
 copy src/it/projects/{MJAVADOC-134_multiaggregate/b/e/src/main/java/a/b/e/E.java => MJAVADOC-555_aggr_mixed/module2/src/main/java/module2/Main.java} (94%)
 copy src/it/projects/{MJAVADOC-172 => MJAVADOC-555_aggr_mixed}/pom.xml (58%)
 copy src/it/projects/{MJAVADOC-449_aggr_modulepath => MJAVADOC-555_aggr_mixed}/verify.groovy (68%)
 copy src/it/projects/{MJAVADOC-498_aggr_modulepath => MJAVADOC-555_link-automatic-modules}/invoker.properties (97%)
 copy src/it/projects/{javadoc-fix => MJAVADOC-555_link-automatic-modules}/pom.xml (53%)
 copy src/it/projects/{MJAVADOC-194/module1/src/main/java/test/Test1.java => MJAVADOC-555_link-automatic-modules/src/main/java/com/testcase/Testcase.java} (84%)
 copy src/it/projects/{MJAVADOC-134_multiaggregate/b/c/d2/src/main/java/a/b/c/d/D2.java => MJAVADOC-555_link-automatic-modules/src/main/java/module-info.java} (94%)
 copy src/it/projects/{MJAVADOC-506_excl-module-info => MJAVADOC-555_link-automatic-modules}/verify.groovy (60%)
 copy src/it/projects/{MJAVADOC-181 => MJAVADOC-558_fix-unknownthrows}/invoker.properties (94%)
 copy src/it/projects/{MJAVADOC-495_offline-filescheme => MJAVADOC-558_fix-unknownthrows}/pom.xml (76%)
 copy src/it/projects/{MJAVADOC-420_fixparam => MJAVADOC-558_fix-unknownthrows}/src/main/java/com/example/FirstBug.java (83%)
 copy src/it/projects/{MJAVADOC-420_fixparam => MJAVADOC-558_fix-unknownthrows}/verify.groovy (78%)
 copy src/it/projects/{MJAVADOC-250 => MJAVADOC-562_release}/invoker.properties (74%)
 copy src/it/projects/{MJAVADOC-498_mm_modulepath => MJAVADOC-562_release}/pom.xml (82%)
 copy src/it/projects/{MJAVADOC-365/src/main/java/foo/Excluded.java => MJAVADOC-562_release/src/main/java/com/foo/MyClass.java} (87%)
 copy src/it/projects/{MJAVADOC-508 => MJAVADOC-567_aggr-mixed}/invoker.properties (93%)
 copy src/it/projects/{MJAVADOC-556_hide-non-exported-packages/module => MJAVADOC-567_aggr-mixed/module1}/pom.xml (62%)
 copy src/it/projects/{MJAVADOC-134_multiaggregate/f/src/main/java/a/f/F.java => MJAVADOC-567_aggr-mixed/module1/src/main/java/module-info.java} (95%)
 copy src/it/projects/{MJAVADOC-134_multiaggregate/b/e/src/main/java/a/b/e/E.java => MJAVADOC-567_aggr-mixed/module1/src/main/java/module1/Main.java} (94%)
 copy src/it/projects/{MJAVADOC-137/test1 => MJAVADOC-567_aggr-mixed/module2}/pom.xml (66%)
 copy src/it/projects/{MJAVADOC-134_multiaggregate/b/e/src/main/java/a/b/e/E.java => MJAVADOC-567_aggr-mixed/module2/src/main/java/module2/Main.java} (94%)
 copy src/it/projects/{MJAVADOC-172 => MJAVADOC-567_aggr-mixed}/pom.xml (58%)
 copy src/it/projects/{MJAVADOC-506_excl-module-info => MJAVADOC-567_aggr-mixed}/verify.groovy (54%)
 copy src/it/projects/{MJAVADOC-498_aggr_modulepath => MJAVADOC-568_export-to-testcase}/invoker.properties (93%)
 copy src/it/{mrm/3rdparty/doclet-1.0.pom => projects/MJAVADOC-568_export-to-testcase/module1/pom.xml} (62%)
 copy src/it/projects/{MJAVADOC-134_multiaggregate/b/e/src/main/java/a/b/e/E.java => MJAVADOC-568_export-to-testcase/module1/src/main/java/module-info.java} (92%)
 copy src/it/projects/{MJAVADOC-134_multiaggregate/b/e/src/main/java/a/b/e/E.java => MJAVADOC-568_export-to-testcase/module1/src/main/java/module1/Module1.java} (89%)
 create mode 100644 src/it/projects/MJAVADOC-568_export-to-testcase/module2/pom.xml
 copy src/it/projects/{MJAVADOC-320/module1/src/main/java/org/apache/maven/plugin/javadoc/it/Module1Class.java => MJAVADOC-568_export-to-testcase/module2/src/main/java/module2/Module2.java} (86%)
 copy src/it/projects/{MJAVADOC-384 => MJAVADOC-568_export-to-testcase}/pom.xml (58%)
 copy src/it/projects/{MJAVADOC-498_aggr_modulepath => MJAVADOC-568_jar-mixed}/invoker.properties (97%)
 copy src/it/projects/{MJAVADOC-526_aggr-managedDeps => MJAVADOC-568_jar-mixed/module1}/pom.xml (65%)
 copy src/it/projects/{MJAVADOC-134_multiaggregate/f/src/main/java/a/f/F.java => MJAVADOC-568_jar-mixed/module1/src/main/java/module-info.java} (95%)
 copy src/it/projects/{MJAVADOC-134_multiaggregate/b/e/src/main/java/a/b/e/E.java => MJAVADOC-568_jar-mixed/module1/src/main/java/module1/Module1.java} (94%)
 copy src/it/projects/{MJAVADOC-257/myj2ee/primary-source => MJAVADOC-568_jar-mixed/module2}/pom.xml (55%)
 copy src/it/projects/{MJAVADOC-414/src/main/java/mjavadoc414/App.java => MJAVADOC-568_jar-mixed/module2/src/main/java/module2/Module2.java} (86%)
 copy src/it/projects/{MJAVADOC-384 => MJAVADOC-568_jar-mixed}/pom.xml (66%)
 copy src/it/projects/{MJAVADOC-498_aggr_modulepath => MJAVADOC-568_manifest-splitpackage}/invoker.properties (97%)
 copy src/it/projects/{MJAVADOC-137/test1 => MJAVADOC-568_manifest-splitpackage/java-module}/pom.xml (66%)
 copy src/it/projects/{MJAVADOC-134_multiaggregate/b/c/d1/src/main/java/a/b/c/d/D1.java => MJAVADOC-568_manifest-splitpackage/java-module/src/main/java/module-info.java} (95%)
 copy src/it/projects/{MJAVADOC-134_multiaggregate/b/e/src/main/java/a/b/e/E.java => MJAVADOC-568_manifest-splitpackage/java-module/src/main/java/normal/Testcase.java} (92%)
 create mode 100644 src/it/projects/MJAVADOC-568_manifest-splitpackage/mojo/pom.xml
 copy src/it/projects/{MJAVADOC-498_modulepath/src/test/java/com/foo/MyTest.java => MJAVADOC-568_manifest-splitpackage/mojo/src/main/java/mojo/TestcaseMojo.java} (56%)
 copy src/it/projects/{MJAVADOC-384 => MJAVADOC-568_manifest-splitpackage}/pom.xml (61%)
 copy src/it/projects/{MJAVADOC-498_aggr_modulepath => MJAVADOC-569_aggr-mixed}/invoker.properties (95%)
 copy src/it/projects/{MJAVADOC-137/test1 => MJAVADOC-569_aggr-mixed/module1}/pom.xml (66%)
 copy src/it/projects/{MJAVADOC-134_multiaggregate/b/e/src/main/java/a/b/e/E.java => MJAVADOC-569_aggr-mixed/module1/src/main/java/module-info.java} (94%)
 copy src/it/projects/{MJAVADOC-134_multiaggregate/b/c/d1/src/main/java/a/b/c/d/D1.java => MJAVADOC-569_aggr-mixed/module1/src/main/java/module1/Module1.java} (94%)
 create mode 100644 src/it/projects/MJAVADOC-569_aggr-mixed/module2/pom.xml
 copy src/it/projects/{MJAVADOC-194/module1/generated-src/main/java/test/GeneratedTest1.java => MJAVADOC-569_aggr-mixed/module2/src/main/java/module2/Module2.java} (78%)
 copy src/it/projects/{MJAVADOC-384 => MJAVADOC-569_aggr-mixed}/pom.xml (53%)
 copy src/it/projects/{MJAVADOC-498_aggr_modulepath => MJAVADOC-575_source8-module-info}/invoker.properties (96%)
 copy src/it/projects/{MJAVADOC-506_excl-module-info => MJAVADOC-575_source8-module-info}/pom.xml (91%)
 copy src/it/projects/{MJAVADOC-506_excl-module-info => MJAVADOC-575_source8-module-info}/src/main/java/com/foo/MyClass.java (100%)
 copy src/it/projects/{MJAVADOC-506_excl-module-info => MJAVADOC-575_source8-module-info}/src/main/java/module-info.java (100%)
 copy src/it/projects/{MJAVADOC-134_multiaggregate/b/c/d2/src/main/java/a/b/c/d/D2.java => MJAVADOC-575_source8-module-info/verify.groovy} (91%)
 copy src/main/java/org/apache/maven/plugins/javadoc/{FixJavadocMojo.java => AggregatorJavadocNoForkReport.java} (63%)
 copy src/main/java/org/apache/maven/plugins/javadoc/{FixJavadocMojo.java => AggregatorTestJavadocNoForkReport.java} (63%)
 copy src/site/apt/examples/{javadoc-nofork.apt.vm => aggregate-nofork.apt.vm} (69%)
 copy src/{main/resources/org/apache/maven/plugins/javadoc/java-api-element-list-11 => test/resources/unit/custom-configuration/element-list} (100%)


[maven-javadoc-plugin] 01/01: [MJAVADOC-469] input isn't escaped for double backslashes in argument file

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch MJAVADOC-469
in repository https://gitbox.apache.org/repos/asf/maven-javadoc-plugin.git

commit 10ed96a7d8af93cda8a009813a696339d16655f5
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Wed Dec 26 23:49:48 2018 +0100

    [MJAVADOC-469] <additionalOption> input isn't escaped for double backslashes in argument file
---
 .../additional-dependencies-non-aggregate/pom.xml  |  15 +-
 src/it/projects/additional-dependencies/pom.xml    |  13 +-
 .../maven/plugins/javadoc/AbstractJavadocMojo.java | 207 +++++++++++----------
 3 files changed, 120 insertions(+), 115 deletions(-)

diff --git a/src/it/projects/additional-dependencies-non-aggregate/pom.xml b/src/it/projects/additional-dependencies-non-aggregate/pom.xml
index ec8d186..3e9188c 100644
--- a/src/it/projects/additional-dependencies-non-aggregate/pom.xml
+++ b/src/it/projects/additional-dependencies-non-aggregate/pom.xml
@@ -103,14 +103,15 @@
           -->
           <bootclasspath>${sun.boot.class.path}</bootclasspath>
           <additionalOptions>
-            <additionalOption>
-              <!-- comment as produce an NPE
+          <!-- comment as produce an NPE
                -federate JDK http://docs.oracle.com/javase/6/docs/api/index.html?
-                -federationxml JDK http://doclava.googlecode.com/svn/static/api/openjdk-6.xml -->
-               -hdf project.name "${project.name}"
-               -d ${project.build.directory}/site/apidocs
-            </additionalOption>
-          </additionalOptions> 
+               -federationxml JDK http://doclava.googlecode.com/svn/static/api/openjdk-6.xml -->
+            <additionalOption>-hdf</additionalOption>
+            <additionalOption>project.name</additionalOption>
+            <additionalOption>"${project.name}"</additionalOption>
+            <additionalOption>-d</additionalOption>
+            <additionalOption>${project.build.directory}/site/apidocs</additionalOption>
+          </additionalOptions>
           <useStandardDocletOptions>false</useStandardDocletOptions>
           <!--
             | Apple's JVM sometimes requires more memory
diff --git a/src/it/projects/additional-dependencies/pom.xml b/src/it/projects/additional-dependencies/pom.xml
index 91def63..042318c 100644
--- a/src/it/projects/additional-dependencies/pom.xml
+++ b/src/it/projects/additional-dependencies/pom.xml
@@ -103,13 +103,14 @@
           -->
           <bootclasspath>${sun.boot.class.path}</bootclasspath>
           <additionalOptions>
-            <additionalOption>
-              <!-- comment as produce an NPE
+          <!-- comment as produce an NPE
                -federate JDK http://docs.oracle.com/javase/6/docs/api/index.html?
-                -federationxml JDK http://doclava.googlecode.com/svn/static/api/openjdk-6.xml -->
-               -hdf project.name "${project.name}"
-               -d ${project.build.directory}/site/apidocs
-             </additionalOption>
+               -federationxml JDK http://doclava.googlecode.com/svn/static/api/openjdk-6.xml -->
+            <additionalOption>-hdf</additionalOption>
+            <additionalOption>project.name</additionalOption>
+            <additionalOption>"${project.name}"</additionalOption>
+            <additionalOption>-d</additionalOption>
+            <additionalOption>${project.build.directory}/site/apidocs</additionalOption>
           </additionalOptions>
           <useStandardDocletOptions>false</useStandardDocletOptions>
           <!--
diff --git a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
index 3177dc5..1ba1535 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
@@ -212,7 +212,7 @@ public abstract class AbstractJavadocMojo
      * Default location for css
      */
     private static final String RESOURCE_CSS_DIR = RESOURCE_DIR + "/css";
-    
+
     private static final String PACKAGE_LIST = "package-list";
     private static final String ELEMENT_LIST = "element-list";
 
@@ -265,7 +265,7 @@ public abstract class AbstractJavadocMojo
     private static final JavaVersion SINCE_JAVADOC_1_8 = JavaVersion.parse( "1.8" );
 
     /**
-     * 
+     *
      */
     private static final JavaVersion JAVA_VERSION = JavaVersion.JAVA_SPECIFICATION_VERSION;
 
@@ -571,9 +571,9 @@ public abstract class AbstractJavadocMojo
 
     /**
      * Use this parameter <b>only</b> if if you want to override the default URLs.
-     * 
-     * The key should match {@code api_x}, where {@code x} matches the Java version.  
-     * 
+     *
+     * The key should match {@code api_x}, where {@code x} matches the Java version.
+     *
      *  For example:
      *  <dl>
      *   <dt>api_1.5</dt>
@@ -861,10 +861,10 @@ public abstract class AbstractJavadocMojo
      */
     @Parameter( property = "source" )
     private String source;
-    
+
     /**
      * Provide source compatibility with specified release
-     * 
+     *
      * @since JDK 9
      * @since 3.1.0
      */
@@ -1335,7 +1335,7 @@ public abstract class AbstractJavadocMojo
     /**
      * Generates compile-time warnings for missing serial tags.
      * <br/>
-     * @see <a href="http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html#serialwarn">serialwarn</a> option 
+     * @see <a href="http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html#serialwarn">serialwarn</a> option
      */
     @Parameter( property = "serialwarn", defaultValue = "false" )
     private boolean serialwarn;
@@ -1719,14 +1719,14 @@ public abstract class AbstractJavadocMojo
      */
     @Parameter( defaultValue = "true", property = "maven.javadoc.applyJavadocSecurityFix" )
     private boolean applyJavadocSecurityFix = true;
-    
+
     /**
      * <p>
      * Specify the requirements for this jdk toolchain.
      * This overrules the toolchain selected by the maven-toolchain-plugin.
      * </p>
      * <strong>note:</strong> requires at least Maven 3.3.1
-     * 
+     *
      * @since 3.0.0
      */
     @Parameter
@@ -1785,7 +1785,7 @@ public abstract class AbstractJavadocMojo
 
         return Collections.singletonList( new File( p.getBuild().getOutputDirectory() ) );
     }
-    
+
     protected File getArtifactFile( MavenProject project )
     {
         if ( !isAggregator() && isTest() )
@@ -1968,9 +1968,9 @@ public abstract class AbstractJavadocMojo
         }
 
         Map<String, Collection<Path>> sourcePaths = getSourcePaths();
-        
+
         Collection<Path> collectedSourcePaths = collect( sourcePaths.values() );
-        
+
         Map<Path, Collection<String>> files = getFiles( collectedSourcePaths );
         if ( !canGenerateReport( files ) )
         {
@@ -2125,7 +2125,7 @@ public abstract class AbstractJavadocMojo
             // ----------------------------------------------------------------------
             // Write argfile file and include it in the command line
             // ----------------------------------------------------------------------
-            
+
             List<String> allFiles = new ArrayList<>();
             for ( Map.Entry<Path, Collection<String>> filesEntry : files.entrySet() )
             {
@@ -2222,14 +2222,14 @@ public abstract class AbstractJavadocMojo
         if ( StringUtils.isEmpty( subpackages ) )
         {
             Collection<String> excludedPackages = getExcludedPackages();
-            
+
             for ( Path sourcePath : sourcePaths )
             {
                 List<String> files = new ArrayList<>();
                 File sourceDirectory = sourcePath.toFile();
                 files.addAll( JavadocUtil.getFilesFromSource( sourceDirectory, sourceFileIncludes, sourceFileExcludes,
                                                               excludedPackages ) );
-                
+
                 if ( source != null && JavaVersion.parse( source ).isBefore( "9" )
                     && files.remove( "module-info.java" ) )
                 {
@@ -2290,7 +2290,7 @@ public abstract class AbstractJavadocMojo
                                            sourcePaths );
                 }
             }
-            
+
             if ( includeDependencySources )
             {
                 mappedSourcePaths.putAll( getDependencySourcePaths() );
@@ -2362,15 +2362,15 @@ public abstract class AbstractJavadocMojo
         {
             reactorProjectsMap.put( reactorProject.getBasedir().toPath(), reactorProject );
         }
-        
+
         return modulesForAggregatedProject( project, reactorProjectsMap );
     }
 
     /**
      * Recursively add the modules of the aggregatedProject to the set of aggregatedModules.
-     * 
+     *
      * @param aggregatedProject the project being aggregated
-     * @param reactorProjectsMap map of (still) available reactor projects 
+     * @param reactorProjectsMap map of (still) available reactor projects
      * @throws MavenReportException if any
      */
     private Set<MavenProject> modulesForAggregatedProject( MavenProject aggregatedProject,
@@ -2393,7 +2393,7 @@ public abstract class AbstractJavadocMojo
         }
 
         Set<MavenProject> aggregatedModules = new LinkedHashSet<>();
-        
+
         for ( Path modulePath : modulePaths )
         {
             MavenProject module = reactorProjectsMap.remove( modulePath );
@@ -2402,7 +2402,7 @@ public abstract class AbstractJavadocMojo
                 aggregatedModules.addAll( modulesForAggregatedProject( module, reactorProjectsMap ) );
             }
         }
-        
+
         return aggregatedModules;
     }
 
@@ -2547,11 +2547,11 @@ public abstract class AbstractJavadocMojo
         throws MavenReportException
     {
         List<String> excludedNames = null;
-        
+
         if ( StringUtils.isNotEmpty( sourcepath ) && StringUtils.isNotEmpty( subpackages ) )
         {
             Collection<String> excludedPackages = getExcludedPackages();
-            
+
             excludedNames = JavadocUtil.getExcludedPackages( sourcePaths, excludedPackages );
         }
 
@@ -2649,7 +2649,7 @@ public abstract class AbstractJavadocMojo
 
     /**
      * Method that gets the classpath and modulepath elements that will be specified in the javadoc
-     * <code>-classpath</code> and <code>--module-path</code> parameter. 
+     * <code>-classpath</code> and <code>--module-path</code> parameter.
      * Since we have all the sources of the current reactor, it is sufficient to consider the
      * dependencies of the reactor modules, excluding the module artifacts which may not yet be available
      * when the reactor project is built for the first time.
@@ -2667,9 +2667,9 @@ public abstract class AbstractJavadocMojo
         {
             classpathElements.addAll( getProjectBuildOutputDirs( project ) );
         }
-        
+
         populateCompileArtifactMap( compileArtifactMap, project.getArtifacts() );
-        
+
         if ( isAggregator() )
         {
             Collection<MavenProject> aggregatorProjects = getAggregatedProjects();
@@ -2679,8 +2679,8 @@ public abstract class AbstractJavadocMojo
             {
                 reactorArtifacts.add( p.getGroupId() + ':' + p.getArtifactId() );
             }
-            
-            TransformableFilter dependencyFilter = new AndFilter( Arrays.asList( 
+
+            TransformableFilter dependencyFilter = new AndFilter( Arrays.asList(
                                                                      new PatternExclusionsFilter( reactorArtifacts ),
                                                                      getDependencyScopeFilter() ) );
 
@@ -2710,13 +2710,13 @@ public abstract class AbstractJavadocMojo
                         ProjectBuildingRequest buildingRequest = session.getProjectBuildingRequest();
                         buildingRequest =
                             buildingRequest.setRemoteRepositories( subProject.getRemoteArtifactRepositories() );
-                        
+
                         List<Dependency> managedDependencies = null;
                         if ( subProject.getDependencyManagement() != null )
                         {
                             managedDependencies = subProject.getDependencyManagement().getDependencies();
                         }
-                        
+
                         for ( ArtifactResult artifactResult
                                     : dependencyResolver.resolveDependencies( buildingRequest,
                                                                               subProject.getDependencies(),
@@ -2725,10 +2725,10 @@ public abstract class AbstractJavadocMojo
                         {
                             populateCompileArtifactMap( compileArtifactMap,
                                                         Collections.singletonList( artifactResult.getArtifact() ) );
-                            
+
                             sb.append( artifactResult.getArtifact().getFile() ).append( '\n' );
                         }
-                        
+
                         if ( getLog().isDebugEnabled() )
                         {
                             getLog().debug( sb.toString() );
@@ -2797,7 +2797,7 @@ public abstract class AbstractJavadocMojo
     protected final Toolchain getToolchain()
     {
         Toolchain tc = null;
-        
+
         if ( jdkToolchain != null )
         {
             // Maven 3.3.1 has plugin execution scoped Toolchain Support
@@ -2822,12 +2822,12 @@ public abstract class AbstractJavadocMojo
                 // ignore
             }
         }
-        
+
         if ( tc == null )
         {
             tc = toolchainManager.getToolchainFromBuildContext( "jdk", session );
         }
-        
+
         return tc;
     }
 
@@ -3571,7 +3571,7 @@ public abstract class AbstractJavadocMojo
             coordinate.setGroupId( javadocArtifact.getGroupId() );
             coordinate.setArtifactId( javadocArtifact.getArtifactId() );
             coordinate.setVersion( javadocArtifact.getVersion() );
-            
+
             Iterable<ArtifactResult> deps =
                 dependencyResolver.resolveDependencies( session.getProjectBuildingRequest(), coordinate,
                                                         ScopeFilter.including( "compile", "provided" ) );
@@ -3610,7 +3610,7 @@ public abstract class AbstractJavadocMojo
         DefaultProjectBuildingRequest buildingRequest =
             new DefaultProjectBuildingRequest( session.getProjectBuildingRequest() );
         buildingRequest.setRemoteRepositories( project.getRemoteArtifactRepositories() );
-        
+
         return artifactResolver.resolveArtifact( buildingRequest, coordinate ).getArtifact();
     }
 
@@ -4136,7 +4136,7 @@ public abstract class AbstractJavadocMojo
             {
                 continue;
             }
-            
+
             if ( isOffline && !link.startsWith( "file:" ) )
             {
                 continue;
@@ -4370,12 +4370,12 @@ public abstract class AbstractJavadocMojo
     private List<String> getPackageNames( Map<Path, Collection<String>> sourcePaths )
     {
         List<String> returnList = new ArrayList<>();
-        
+
         if ( !StringUtils.isEmpty( sourcepath ) )
         {
             return returnList;
         }
-        
+
         for ( Entry<Path, Collection<String>> currentPathEntry : sourcePaths.entrySet() )
         {
             for ( String currentFile : currentPathEntry.getValue() )
@@ -4388,12 +4388,12 @@ public abstract class AbstractJavadocMojo
                 {
                     continue;
                 }
-        
+
                 int lastIndexOfSeparator = currentFile.lastIndexOf( "/" );
                 if ( lastIndexOfSeparator != -1 )
                 {
                     String packagename = currentFile.substring( 0, lastIndexOfSeparator ).replace( '/', '.' );
-        
+
                     if ( !returnList.contains( packagename ) )
                     {
                         returnList.add( packagename );
@@ -4401,7 +4401,7 @@ public abstract class AbstractJavadocMojo
                 }
             }
         }
-        
+
         return returnList;
     }
 
@@ -4432,7 +4432,7 @@ public abstract class AbstractJavadocMojo
                 ResolvePathsRequest<File> request =
                         ResolvePathsRequest.ofFiles( Collections.<File>emptyList() ).
                                 setMainModuleDescriptor( mainDescriptor );
-    
+
                 try
                 {
                     Set<JavaModuleDescriptor.JavaExports> exports = locationManager.resolvePaths( request ).
@@ -4456,7 +4456,7 @@ public abstract class AbstractJavadocMojo
             {
                 exportAllPackages = true;
             }
-            
+
             for ( Map.Entry<Path, Collection<String>> currentPathEntry : getFiles( artifactSourcePaths ).entrySet() )
             {
                 for ( String currentFile : currentPathEntry.getValue() )
@@ -4496,16 +4496,16 @@ public abstract class AbstractJavadocMojo
     private List<String> getFilesWithUnnamedPackages( Map<Path, Collection<String>> sourcePaths )
     {
         List<String> returnList = new ArrayList<>();
-        
+
         if ( !StringUtils.isEmpty( sourcepath ) )
         {
             return returnList;
         }
-        
+
         for ( Entry<Path, Collection<String>> currentPathEntry : sourcePaths.entrySet() )
         {
             Path currentSourcePath = currentPathEntry.getKey();
-        
+
             for ( String currentFile : currentPathEntry.getValue() )
             {
                 /*
@@ -4516,17 +4516,17 @@ public abstract class AbstractJavadocMojo
                 {
                     continue;
                 }
-        
+
                 if ( currentFile.indexOf( File.separatorChar ) == -1 )
                 {
                     returnList.add( currentSourcePath.resolve( currentFile ).toAbsolutePath().toString() );
                 }
             }
         }
-        
+
         return returnList;
     }
-    
+
     /**
      * Either return only the module descriptor or all sourcefiles per sourcepath
      * @param sourcePaths could be null
@@ -4539,7 +4539,7 @@ public abstract class AbstractJavadocMojo
         {
             return new ArrayList<>();
         }
-        
+
         boolean containsModuleDescriptor = false;
         for ( Collection<String> sourcepathFiles : sourcePaths.values() )
         {
@@ -4549,7 +4549,7 @@ public abstract class AbstractJavadocMojo
                 break;
             }
         }
-        
+
         if ( containsModuleDescriptor )
         {
             return getModuleSourcePathFiles( sourcePaths );
@@ -4563,7 +4563,7 @@ public abstract class AbstractJavadocMojo
     private List<String> getModuleSourcePathFiles( Map<Path, Collection<String>> sourcePaths )
     {
         List<String> returnList = new ArrayList<>();
-        
+
         for ( Entry<Path, Collection<String>> currentPathEntry : sourcePaths.entrySet() )
         {
             Path currentSourcePath = currentPathEntry.getKey();
@@ -4583,7 +4583,7 @@ public abstract class AbstractJavadocMojo
                     {
                         continue;
                     }
-            
+
                     returnList.add( currentSourcePath.resolve( currentFile ).toAbsolutePath().toString() );
                 }
             }
@@ -4669,7 +4669,7 @@ public abstract class AbstractJavadocMojo
         {
             quotedFiles.add( JavadocUtil.quotedPathArgument( file ) );
         }
-        
+
         try
         {
             FileUtils.fileWrite( argfileFile.getAbsolutePath(), null /* platform encoding */,
@@ -4865,7 +4865,7 @@ public abstract class AbstractJavadocMojo
         throws MavenReportException
     {
         Collection<Path> sourcePaths = collect( allSourcePaths.values() );
-        
+
         validateJavadocOptions();
 
         // see com.sun.tools.javadoc.Start#parseAndExecute(String argv[])
@@ -4891,25 +4891,25 @@ public abstract class AbstractJavadocMojo
         {
             addArgIf( arguments, breakiterator, "-breakiterator", SINCE_JAVADOC_1_5 );
         }
-        
+
         Map<String, MavenProject> reactorKeys = new HashMap<>( reactorProjects.size() );
         for ( MavenProject reactorProject : reactorProjects )
         {
             reactorKeys.put( ArtifactUtils.versionlessKey( reactorProject.getGroupId(),
                                                            reactorProject.getArtifactId() ), reactorProject );
         }
-        
+
         Map<String, JavaModuleDescriptor> allModuleDescriptors = new HashMap<>();
-        
+
         boolean supportModulePath = javadocRuntimeVersion.isAtLeast( "9" )
             && ( source == null || JavaVersion.parse( source ).isAtLeast( "9" ) );
-        
+
         if ( supportModulePath )
         {
             for ( Map.Entry<String, Collection<Path>> entry : allSourcePaths.entrySet() )
             {
                 MavenProject entryProject = reactorKeys.get( entry.getKey() );
-                
+
                 File artifactFile;
                 if ( entryProject != null )
                 {
@@ -4920,11 +4920,11 @@ public abstract class AbstractJavadocMojo
                     artifactFile = project.getArtifactMap().get( entry.getKey() ).getFile();
                 }
                 ResolvePathResult resolvePathResult = getResolvePathResult( artifactFile );
-                
+
                 if ( resolvePathResult == null || resolvePathResult.getModuleNameSource() == ModuleNameSource.FILENAME )
                 {
                     File moduleDescriptor = findMainDescriptor( entry.getValue() );
-                    
+
                     if ( moduleDescriptor != null )
                     {
                         try
@@ -4948,9 +4948,9 @@ public abstract class AbstractJavadocMojo
         Collection<String> additionalModules = new ArrayList<>();
 
         ResolvePathResult mainResolvePathResult = null;
-        
+
         Map<String, Collection<Path>> patchModules = new HashMap<>();
-        
+
         Path moduleSourceDir = null;
         if ( supportModulePath && !allModuleDescriptors.isEmpty() )
         {
@@ -4961,10 +4961,10 @@ public abstract class AbstractJavadocMojo
                 if ( aggregatedProject != null )
                 {
                     ResolvePathResult result = null;
-                    
+
                     // Prefer jar over outputDirectory, since it may may contain an automatic module name
                     File artifactFile = getArtifactFile( aggregatedProject );
-                    if ( artifactFile != null ) 
+                    if ( artifactFile != null )
                     {
                         ResolvePathRequest<File> request = ResolvePathRequest.ofFile( artifactFile );
                         try
@@ -4987,7 +4987,7 @@ public abstract class AbstractJavadocMojo
                     else
                     {
                         File moduleDescriptor = findMainDescriptor( projectSourcepaths.getValue() );
-                        
+
                         if ( moduleDescriptor != null )
                         {
                             try
@@ -5011,7 +5011,7 @@ public abstract class AbstractJavadocMojo
                             additionalModules.add( result.getModuleDescriptor().name() );
 
                             patchModules.put( result.getModuleDescriptor().name(), projectSourcepaths.getValue() );
-                            
+
                             Path modulePath = moduleSourceDir.resolve( result.getModuleDescriptor().name() );
                             if ( !Files.isDirectory( modulePath ) )
                             {
@@ -5023,12 +5023,12 @@ public abstract class AbstractJavadocMojo
                             throw new MavenReportException( e.getMessage(), e );
                         }
                     }
-                    else 
+                    else
                     {
                         unnamedProjects.add( projectSourcepaths.getKey() );
                     }
-                    
-                    if ( aggregatedProject.equals( getProject() ) ) 
+
+                    if ( aggregatedProject.equals( getProject() ) )
                     {
                         mainResolvePathResult = result;
                     }
@@ -5039,7 +5039,7 @@ public abstract class AbstractJavadocMojo
                     getLog().error( "no reactor project: " + projectSourcepaths.getKey() );
                 }
             }
-            
+
             if ( !unnamedProjects.isEmpty() )
             {
                 getLog().error( "Creating an aggregated report for both named and unnamed modules is not possible." );
@@ -5052,7 +5052,7 @@ public abstract class AbstractJavadocMojo
                 }
                 throw new MavenReportException( "Aggregator report contains named and unnamed modules" );
             }
-            
+
             if ( mainResolvePathResult != null
                 && ModuleNameSource.MANIFEST.equals( mainResolvePathResult.getModuleNameSource() ) )
             {
@@ -5060,7 +5060,7 @@ public abstract class AbstractJavadocMojo
                 arguments.add( "ALL-MODULE-PATH" );
             }
         }
-        
+
         // MJAVADOC-506
         boolean moduleDescriptorSource = false;
         for ( Path sourcepath : sourcePaths )
@@ -5071,7 +5071,7 @@ public abstract class AbstractJavadocMojo
                 break;
             }
         }
-        
+
         final ModuleNameSource mainModuleNameSource;
         if ( mainResolvePathResult != null )
         {
@@ -5081,7 +5081,7 @@ public abstract class AbstractJavadocMojo
         {
             mainModuleNameSource = null;
         }
-        
+
         if ( supportModulePath
              && !isTest()
              && ( isAggregator()
@@ -5094,7 +5094,7 @@ public abstract class AbstractJavadocMojo
             {
                 pathElements.add( 0, artifactFile );
             }
-            
+
             ResolvePathsRequest<File> request =
                 ResolvePathsRequest.ofFiles( pathElements );
 
@@ -5104,15 +5104,15 @@ public abstract class AbstractJavadocMojo
                 request.setModuleDescriptor( mainResolvePathResult.getModuleDescriptor() );
                 mainModuleName = mainResolvePathResult.getModuleDescriptor().name();
             }
-            
+
             request.setAdditionalModules( additionalModules );
 
             try
             {
                 ResolvePathsResult<File> result = locationManager.resolvePaths( request );
-                
+
                 Set<File> modulePathElements = new HashSet<>( result.getModulepathElements().keySet() )  ;
-                
+
                 Collection<File> classPathElements = new ArrayList<>( result.getClasspathElements().size() );
 
                 for ( File file : result.getClasspathElements() )
@@ -5144,7 +5144,7 @@ public abstract class AbstractJavadocMojo
                 String classpath = StringUtils.join( classPathElements.iterator(), File.pathSeparator );
                 addArgIfNotEmpty( arguments, "--class-path", JavadocUtil.quotedPathArgument( classpath ), false,
                                   false );
-                
+
                 String modulepath =
                     StringUtils.join( modulePathElements.iterator(), File.pathSeparator );
                 addArgIfNotEmpty( arguments, "--module-path", JavadocUtil.quotedPathArgument( modulepath ), false,
@@ -5217,7 +5217,7 @@ public abstract class AbstractJavadocMojo
         {
             sourcepath = StringUtils.join( sourcePaths.iterator(), File.pathSeparator );
         }
-        
+
         if ( moduleSourceDir == null )
         {
             addArgIfNotEmpty( arguments, "-sourcepath",
@@ -5235,7 +5235,7 @@ public abstract class AbstractJavadocMojo
         {
             addArgIfNotEmpty( arguments, "-subpackages", subpackages, SINCE_JAVADOC_1_5 );
         }
-        
+
         // [MJAVADOC-497] must be after sourcepath is recalculated, since getExcludedPackages() depends on it
         addArgIfNotEmpty( arguments, "-exclude", getExcludedPackages( sourcePaths ), SINCE_JAVADOC_1_4 );
 
@@ -5243,7 +5243,10 @@ public abstract class AbstractJavadocMojo
 
         if ( additionalOptions != null && additionalOptions.length > 0 )
         {
-            Collections.addAll( arguments, additionalOptions );
+            for ( String additionalOption : additionalOptions )
+            {
+                arguments.add( additionalOption.replaceAll( "(?<!\\\\)\\\\(?!\\\\|:)", "\\\\" ) );
+            }
         }
     }
 
@@ -5259,7 +5262,7 @@ public abstract class AbstractJavadocMojo
         try
         {
             resolvePathResult = locationManager.resolvePath( resolvePathRequest );
-            
+
             // happens when artifactFile is a directory without module descriptor
             if ( resolvePathResult.getModuleDescriptor() == null )
             {
@@ -5302,7 +5305,7 @@ public abstract class AbstractJavadocMojo
      * @see <a href="http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html#standard">
      *      http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html#standard</a>
      */
-    private void addStandardDocletOptions( File javadocOutputDirectory, 
+    private void addStandardDocletOptions( File javadocOutputDirectory,
                                            List<String> arguments,
                                            Set<OfflineLink> offlineLinks )
         throws MavenReportException
@@ -6199,11 +6202,11 @@ public abstract class AbstractJavadocMojo
                                     + "${project.build.pluginManagement} for the " + project.getId()
                                     + ". Added Javadoc API link according the javadoc executable version i.e.: "
                                     + javadocRuntimeVersion );
-                
+
                 javaApiversion = javadocRuntimeVersion;
             }
         }
-        
+
         final String javaApiKey;
         if ( javaApiversion.asMajor().isAtLeast( "9" ) )
         {
@@ -6213,11 +6216,11 @@ public abstract class AbstractJavadocMojo
         {
             javaApiKey = "api_1." + javaApiversion.asMajor().toString().charAt( 0 );
         }
-        
+
         final String javaApiLink;
         if ( javaApiLinks != null && javaApiLinks.containsKey( javaApiKey ) )
         {
-            javaApiLink = javaApiLinks.getProperty( javaApiKey );  
+            javaApiLink = javaApiLinks.getProperty( javaApiKey );
         }
         else if ( javaApiversion.isAtLeast( "11" ) )
         {
@@ -6235,7 +6238,7 @@ public abstract class AbstractJavadocMojo
         {
             javaApiLink = null;
         }
-        
+
         if ( getLog().isDebugEnabled() )
         {
             if ( javaApiLink != null )
@@ -6274,7 +6277,7 @@ public abstract class AbstractJavadocMojo
         OfflineLink link = new OfflineLink();
         link.setLocation( javaApiListFile.getParent().toAbsolutePath().toString() );
         link.setUrl( javaApiLink );
-        
+
         InputStream in = this.getClass().getResourceAsStream( resourceName );
         if ( in != null )
         {
@@ -6333,7 +6336,7 @@ public abstract class AbstractJavadocMojo
         {
             final URI packageListUri;
             final URI elementListUri;
-            
+
             if ( link.trim().toLowerCase( Locale.ENGLISH ).startsWith( "http:" ) || link.trim().toLowerCase(
                 Locale.ENGLISH ).startsWith( "https:" ) || link.trim().toLowerCase( Locale.ENGLISH ).startsWith(
                 "ftp:" ) || link.trim().toLowerCase( Locale.ENGLISH ).startsWith( "file:" ) )
@@ -6364,20 +6367,20 @@ public abstract class AbstractJavadocMojo
                 elementListUri = new File( dir, ELEMENT_LIST ).toURI();
             }
 
-            
+
             IOException elementListIOException = null;
-            try 
+            try
             {
                 if ( JavadocUtil.isValidElementList( elementListUri.toURL(), settings, validateLinks ) )
                 {
                     return true;
                 }
             }
-            catch ( IOException e ) 
+            catch ( IOException e )
             {
                 elementListIOException = e;
             }
-            
+
             if ( JavadocUtil.isValidPackageList( packageListUri.toURL(), settings, validateLinks ) )
             {
                 return true;
@@ -6392,7 +6395,7 @@ public abstract class AbstractJavadocMojo
                 }
                 else
                 {
-                    getLog().error( "Invalid links: " 
+                    getLog().error( "Invalid links: "
                                     + link + " with /" + PACKAGE_LIST + " or / " + ELEMENT_LIST + ". Ignored it." );
                 }
             }
@@ -6629,7 +6632,7 @@ public abstract class AbstractJavadocMojo
         }
 
         File optionsFile = getJavadocOptionsFile();
-        
+
         try ( Writer writer = WriterFactory.newXmlWriter( optionsFile ) )
         {
             new JavadocOptionsXpp3Writer().write( writer, options );