为多模块项目生成Javadoc

时间:2020-04-18 00:12:13

标签: maven maven-javadoc-plugin

我已经阅读了解决该问题的所有内容,但尝试仍然失败。我能做的最好的事情就是让一个模块的Javadoc出现-最后一个模块。 (目前,我没有试图将Javadoc捆绑到任何JAR中。我也没有试图进行任何“站点”操作。)我只是想将Javadoc放置在项目根目录下的子目录中。

这是我父母 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>

我曾经玩过用以下命令替换父文件中的<execution>以及从属的 pom.xml 文件:

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

但这没什么区别。

1 个答案:

答案 0 :(得分:1)

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

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

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

解决方案是使用默认输出目录,而是为聚集的Javadoc配置输出目录。这样,反应堆构建将在每个模块的目标目录中创建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

(请注意,反应堆需要使用编译或打包目标来解决模块间的依赖性)