为多模块项目生成 Javadoc

Generate Javadoc for multimodule project

我已经阅读了我能找到的关于解决这个问题的所有内容,但我的尝试仍然失败。我能做的最好的事情就是只显示一个模块的 Javadoc——最后一个构建的模块。 (目前,我没有尝试将 Javadoc 捆绑到任何 JAR 中。我也没有尝试做任何事情 "site"。)我只是想将 Javadoc 放入项目根目录下的子目录中以便于访问。

这是我的 parent pom.xml:

<build>
  <plugins>
    .
    .
    .
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>3.2.0</version>
      <configuration>
        <noqualifier>all</noqualifier>
        <reportOutputDirectory>${user.dir}/documents</reportOutputDirectory>
        <destDir>javadoc</destDir>
      </configuration>
      <executions>
        <execution>
          <id>attach-javadocs</id>
          <phase>package</phase>
          <goals>
            <goal>jar</goal>
          </goals>
        </execution>
      </executions>
    </plugin>

我放入下属 pom.xml 文件的内容与上述相同,除了

          <goals>
            <goal>javadoc</goal>
          </goals>

我尝试用 parent 和有时下属的 pom.xml 文件替换 <execution> 为:

        <execution>
          <id>aggregate</id>
          <goals>
            <goal>aggregate</goal>
          </goals>
        </execution>

但这没有什么区别。

我认为以下配置是您的报告被覆盖的原因:

<configuration>
  <reportOutputDirectory>${user.dir}/documents</reportOutputDirectory>
</configuration>

所有模块构建都将写入同一目录,因此会覆盖之前的构建。

解决方法是使用默认输出目录,改为配置聚合javadoc的输出目录。这样,reactor 构建将在每个模块的目标目录中创建 javadoc 输出文件。然后这些可以被聚合目标使用。

这可以通过如下配置您的父 POM 来完成:

<build>
    <plugins>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
            <!-- Default configuration for all reports -->
            <noqualifier>all</noqualifier>
            <destDir>javadoc</destDir>
        </configuration>
        <executions>
            <execution>
            <id>aggregate</id>
            <goals>
                <goal>aggregate</goal>
            </goals>
            <configuration>
                <!-- Specific configuration for the aggregate report -->
                <reportOutputDirectory>${user.dir}/documents</reportOutputDirectory>
                <destDir>javadoc</destDir>
            </configuration>
            </execution>
            ...
        </executions>
        </plugin>
        ...
    </plugins>
</build>

(无需在模块POM文件中进行任何额外配置)

现在可以通过 运行

创建聚合的 javadoc
mvn compile javadoc:javadoc javadoc:aggregate

(注意reactor需要compile或package goal来解决模块间依赖)