为多模块项目(聚合)配置Maven Java文档插件

时间:2019-05-31 19:41:12

标签: java maven

我想在我的项目中设置maven java-docs插件,以创建一个聚合报告,该报告仅包含某些模块中的某些类,并将该报告输出到所选的文件夹中。

我已经尝试使用Maven文档here,但是显示的内容似乎不适用于我。 我过去尝试过以下配置,并将其运行为: mvn javadoc:javadoc甚至javadoc:aggregate具有以下父/子pom配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>3.1.0</version>
    <inherited>false</inherited>
    <configuration>
        <!-- Default configuration for all reports -->
    </configuration>
    <executions>
        <execution>
            <id>aggregate</id>
            <goals>
                <goal>aggregate</goal>
            </goals>
            <phase>package</phase>
            <configuration>
            </configuration>
        </execution>
    </executions>
</plugin>

我过去曾经使用过这样的东西:

父pom.xml

<pluginManagement>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
            <skip>true</skip>
        </configuration>
    </plugin>
</pluginManagement>
...
<build>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
            <!-- Default configuration for all reports -->
        </configuration>
        <executions>
            <execution>
                <id>aggregate</id>
                <goals>
                    <goal>aggregate</goal>
                </goals>
                <phase>site</phase>
                <configuration>
                    <skip>false</skip>
                </configuration>
            </execution>
        </executions>
    </plugin>
</build>

所需的子模块pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
                <skip>false</skip>
                <noqualifier>all</noqualifier>
                <sourceFileIncludes>
                    <include>**\/\Class1.java</include>
                    <include>**\/\Class2.java</include>
                    <include>**\/\Interface3.java</include>
                    <include>**\/\Class4.java</include>
                </sourceFileIncludes>
                <reportOutputDirectory>${project.parent.basedir}/..</reportOutputDirectory>
                <destDir>java-docs</destDir>
            </configuration>
        </plugin>
    </plugins>
</build>

如果仅从一个模块生成该配置,则工作正常,但是一旦选择了另一个子模块并将其配置为如上所示,运行mvn javadoc:aggregate继续仅为模块1和模块2生成文档被忽略(甚至可能被覆盖)

有人在类似的场景下工作过吗?一个多模块项目,其结构如下:

ParentFolder
. . . module1
        pom.xml
. . . module3
        pom.xml
. . . module4
        pom.xml
pom.xml

并且已经成功使用maven java docs插件生成了汇总的Java docs报告,同时排除了某些类并将结果输出到他们选择的文件夹中? 任何帮助,将不胜感激!

1 个答案:

答案 0 :(得分:0)

您是否有一个父POM包含子POM的插件配置,模块定义?如果是这样,您可能要考虑将此POM分为一个单独的聚合器(模块定义)和父级(当前POM中应与子级共享的任何其他项)。

answer详细介绍了Maven构建顺序以及行为发生的原因。

聚合器POM还将保存应聚合的子模块数据的配置,例如Javadoc。