Maven javadoc 插件 3.1.0 不生成聚合 javadoc

Maven javadoc plugin 3.1.0 not generating aggregate javadocs

我有一个多模块项目,我想为其生成聚合 javadoc 报告。我正在使用 maven-javadoc-plugin 版本 3.1.0。这是 pom.xml 文件的报告部分:

<reporting>
 <plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>3.1.0</version>
    <reportSets>
      <reportSet>
        <id>non-aggregate</id>
        <reports>
          <report>javadoc</report>
        </reports>
      </reportSet>
      <reportSet>
        <id>aggregate</id>
        <inherited>false</inherited>
        <reports>
          <report>aggregate</report>
        </reports>
      </reportSet>
    </reportSets>
  </plugin>
 </plugins>
</reporting>

我正在使用 mvn site:site site:stage 目标来生成 javadoc 报告。当我 运行 这个命令时,我希望在 target/site/ 下看到包含 index.htmlapidocs 目录,但我没有看到 apidocs 目录。

有趣的是,如果我切换到 maven-javadoc-plugin3.0.1 版本,则会成功生成聚合 javadoc。

我知道 3.1.0 中 aggregate 报告的生成方式发生了变化,因为 documented here 我使用了相同的报告设置。

此外,为两个版本的插件正确生成了各个模块的 javadoc。

其他详情:

我终于找到了导致这个问题的原因。我怀疑原因是在maven-javadoc-plugin版本3.1.0中,有一个补丁可以修复Support aggregated reports at each level in the multi-module hierarchy

此修复使用聚合器 pom.xml 中定义的路径来确定 canGenerateReport() 的结果。

调查我的聚合器 pom.xml 中定义的模块后,我发现我的模块定义为:

<modules>
    <module>./path/to/module1</module>
    <module>./path/to/module2</module>
    <module>./path/to/module3</module>
</modules>

路径中有 ./,导致 canGenerateReport() 返回 false。删除 ./ 解决了这个问题。

修复后,我的模块定义如下所示:

<modules>
    <module>path/to/module1</module>
    <module>path/to/module2</module>
    <module>path/to/module3</module>
</modules>