Настройка плагина maven java-docs для многомодульных проектов (Aggregate) - PullRequest
0 голосов
/ 31 мая 2019

Я хотел бы настроить плагин maven java-docs в моем проекте для создания сводного отчета, который включает в себя только некоторые классы из некоторых модулей, и вывода отчета в выбранную папку.

Я уже пытался работать с документацией Maven здесь однако то, что указано там, похоже, не работает для меня. Я пробовал следующую конфигурацию в прошлом и запустил ее как: mvn javadoc: javadoc или даже javadoc: объединяются со следующими конфигурациями 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

и удалось ли создать агрегированный отчет по Java-документам с помощью плагина Maven Java-документов, при этом исключая некоторые классы и выводя результаты в папку по своему выбору? Любая помощь с этим будет принята с благодарностью!

1 Ответ

1 голос
/ 01 июня 2019

Есть ли у вас один родительский POM, который содержит конфигурацию плагина для дочерних POM, определения модулей и ? Если это так, вы можете рассмотреть возможность разделения этого POM на отдельный агрегатор (определения модулей) и родительский объект (все остальное в текущем POM, которое должно быть доступно дочерним элементам).

В этом ответе более подробно рассказывается о порядке сборки Maven и причинах такого поведения.

POM агрегатора также будет содержать конфигурацию данных дочернего модуля, которые должны быть агрегированы, например Javadoc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...