为多模块项目生成Javadoc



我已经阅读了关于解决这个问题的所有内容,但我的尝试仍然失败。我能做的最好的事情就是只显示一个模块的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>

但这没什么区别。

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

<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解决模块间依赖关系所必需的(

最新更新