Maven Javadoc не смог найти мой подпакет - 'javadoc: предупреждение - нет исходных файлов для пакета'

У меня есть этот проект Maven. Я пытаюсь, чтобы Maven автоматически генерировал JavaDocs при запуске пакета mvn. Весь проект компилируется и упаковывается просто отлично. Он сгенерировал документацию для всех моих классов Java, которые просто в основном пакете, но не сгенерировал документацию для каких-либо классов в подпакетах. Он сказал, что не может их найти.

Точное сообщение об ошибке:

[WARNING] javadoc: warning - No source files for package parser

Я структурировал свой проект так:

pom.xml
src (directory)
    main (directory)
        java (directory)
            parser (directory)
                Parser.java
                StringParser.java
                ByteParser.java
            Main.java
            Reader.java

Классы Main.java и Reader.java имеют пакет package com.personal.reader; Классы в каталоге парсера имеют пакет package com.personal.reader.parser; Похоже, что в сообщении об ошибке говорилось, что он не может найти "com.personal.reader.parser".

Мой pom.xml выглядит так: (удалил некоторые вещи для краткости)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.personal.reader</groupId>
    <artifactId>Reader</artifactId>
    <packaging>jar</packaging>
    <version>0.1.0</version>
    <name>Reader</name>
    <url>http://maven.apache.org</url>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <outputDirectory>docs</outputDirectory>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Я пытался искать решения. Ближайшая вещь, которую я нашел, это вопрос Stackru. Там, кажется, нет четкого ответа. Я попытался скомпилировать проект, который был связан в ответе автора, чтобы увидеть, решил он это или нет. В проекте автора все еще были те же проблемы, что и у меня.

Я попытался создать файл package-info.java в src/main/java и src/main/java/parser. Это, казалось, не сработало.

Я попытался возиться с Maven-Javadoc-плагинов. Я посмотрел на sourceFileIncludes, includeDependencySources, subpackages и dependencySourceInclude. Ни один из них, кажется, не работает. Я мог что-то пропустить.

Как я могу исправить эту проблему Maven, не включая подпакет для создания Javadocs?

1 ответ

Похоже, я нашел свой ответ. Я публикую это здесь, чтобы другие люди, у которых была такая же проблема, могли найти это здесь.

Как я это сделал: у меня был еще один переход на тег sourceFileIncludes в maven-javadoc-plugins. Я добавил это в плагин в проекте pom.xml,

<sourceFileIncludes>
    <sourceFileInclude>**/*.java</sourceFileInclude>
</sourceFileIncludes>

Весь плагин в проекте pom.xml выглядит так:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>3.0.0</version>
    <configuration>
        <outputDirectory>docs</outputDirectory>
        <sourceFileIncludes>
            <sourceFileInclude>**/*.java</sourceFileInclude>
        </sourceFileIncludes>
    </configuration>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Он успешно сгенерировал документы Javadocs на классах в каталоге парсера. Я предполагаю, что это также будет работать с другими каталогами или более глубокими каталогами. Если это не так, вы можете просто добавить еще <sourceFileInclude> под <sourceFileIncludes> группа со своим собственным путем.

Я не уверен на сто процентов, если это правильный ответ, но он, безусловно, работает хорошо для меня. Если у кого-то есть лучшее решение, пожалуйста, отправьте его здесь.

Другие вопросы по тегам