Java 11/12 Javadoc с maven приводит к не генерации Javadoc для тестов - PullRequest
11 голосов
/ 14 апреля 2019

У меня есть небольшой проект со следующей структурой:

pom.xml

src/main/java/
  module-info.java
  de.ps.pl.te/
    package-info.java
    TE.java

src/test/java/
   de.ps.pl.te.test/
     package-info.java
     TETests.java

Также в моем maven pom я определил плагин javadoc следующим образом:

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
          <show>protected</show>
          <failOnError>false</failOnError>
        </configuration>
      </plugin>

Теперь я получил несколько странных выводов во время работы

mvn clean install site

[INFO] Создание отчета "Javadoc" --- maven-javadoc-plugin: 3.1.0: aggregate-no-fork [ОШИБКА] Ошибка при получении ссылки: D: \ work \ eclipse \ java \ FritzBox \ phplib \ target \ javadoc-bundle-options. Игнорировал это.

[...]

[INFO] Создание отчета "Test Javadoc" --- maven-javadoc-plugin: 3.1.0: test-aggregate-no-fork

[ОШИБКА] Ошибка при получении ссылки: D: \ work \ eclipse \ java \ FritzBox \ phplib \ target \ javadoc-bundle-options. Игнорировал это.

Загрузка исходных файлов для пакета de.ps.pl.te.test ...

1 ошибка

[ОШИБКА] Ошибка при создании отчета Javadoc:

Код выхода: 2 - javadoc: ошибка - Нет исходных файлов для пакета de.powerstat.phplib.templateengine.test

Командная строка была: [...] javadoc.exe @options @ packages

Обратитесь к сгенерированным файлам Javadoc в директории [...].

org.apache.maven.reporting.MavenReportException:

Код выхода: 2 - javadoc: ошибка - Нет исходных файлов для пакета de.ps.pl.te.test

Командная строка была: [...] javadoc.exe @options @ packages

Обратитесь к сгенерированным файлам Javadoc в директории '[...] \ target \ site \ testapidocs'.

at org.apache.maven.plugins.javadoc.AbstractJavadocMojo.executeJavadocCommandLine (AbstractJavadocMojo.java:5761)

at org.apache.maven.plugins.javadoc.AbstractJavadocMojo.executeReport (AbstractJavadocMojo.java:2148)

at org.apache.maven.plugins.javadoc.TestJavadocReport.executeReport (TestJavadocReport.java:162)

[...]

Я изучил следующий вопрос:

Но моя проблема, кажется, другая и основана на модульности Java. Итак, вопрос в том, как это исправить - или это больше, чтобы сделать отчет об ошибке?

РЕДАКТИРОВАТЬ 1

Теперь я попробовал с JDK 11.0.3 и JDK 12.0.1 - мне не удалось загрузить OpenJDK из-за проблем с сертификатом оракула и сервером - поэтому я не смог протестировать ранний доступ к OpenJDK 13.

Интересным моментом является то, что сообщение об ошибке незначительно отличается при использовании версии 11 / 12.

В JDK 11 ошибка:

Код выхода: 1 - Project \ src \ main \ java \ module-info.java: 12: ошибка: модуль не найден: org.apache.logging.log4j требуется org.apache.logging.log4j;

С JDK 12 ошибка:

Код выхода: 1 - ошибка: модуль не найден: de.powerstat.phplib.templateengine

Остальная часть сообщения остается прежней.

Также я нашел сообщение об ошибке, которое может быть здесь:

Javadoc не поддерживает информацию о модуле в мульти-релиз-банке

Также я безуспешно пытался исключить module-info.java:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-javadoc-plugin</artifactId>
  <version>3.1.0</version>
  <configuration>
    <show>protected</show>
    <failOnError>false</failOnError>
    <sourceFileExcludes>
      <sourceFileExclude>**/module-info.java</sourceFileExclude>
    </sourceFileExcludes>
  </configuration>
</plugin>

РЕДАКТИРОВАТЬ 2

В пределах target \ site \ apidocs я могу найти следующие (сгенерированные maven?) Файлы:

  • argfile
  • javadoc.bat
  • опции
  • пакеты

argfile:

'D:/TemplateEngine/src/main/java/de/ps/pl/te/package-info.java'
'D:/TemplateEngine/src/main/java/de/ps/pl/te/TemplateEngine.java'

javadoc.bat:

D:\Programme\Java\jdk-11.0.3\bin\javadoc.exe @options @argfile

пакеты:

de.powerstat.phplib.templateengine
de.powerstat.phplib.templateengine

Параметры:

--module-path
'C:/.m2/repository/org/apache/logging/log4j/log4j-api/2.11.2/log4j-api-2.11.2.jar;C:/.m2/repository/org/apache/logging/log4j/log4j-core/2.11.2/log4j-core-2.11.2.jar'
-sourcepath
'D:/TemplateEngine/src/main/java'
-d
'D:/TemplateEngine/target/site/apidocs'
-linkoffline
'https://docs.oracle.com/en/java/javase/11/docs/api' 'D:/TemplateEngine/target/javadoc-bundle-options'
[Removed uninteresting parts like encoding, title etc.]

Для случая, когда кто-то хотел бы попробовать это сам, я сделал весь проект доступным на GitHub

1 Ответ

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

Во время тестирования я видел эту ошибку

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.7.1:site (default-site) on project templateengine: Execution default-site of goal org.apache.maven.plugins:maven-site-plugin:3.7.1:site failed: could not find reports directory [C:\tmp\TemplateEngine\target\pit-reports]
[ERROR]
[ERROR] Please copy and paste the information and the complete stacktrace below when reporting an issue
[ERROR] VM : OpenJDK 64-Bit Server VM
[ERROR] Vendor : Oracle Corporation
[ERROR] Version : 12.0.1+12
[ERROR] Uptime : 146619
[ERROR] Input ->
[ERROR]  1 : -Dclassworlds.conf=C:/ProgramData/chocolatey/lib/maven/apache-maven-3.6.1/bin/m2.conf
[ERROR]  2 : -Dmaven.home=C:/ProgramData/chocolatey/lib/maven/apache-maven-3.6.1
[ERROR]  3 : -Dlibrary.jansi.path=C:/ProgramData/chocolatey/lib/maven/apache-maven-3.6.1/lib/jansi-native
[ERROR]  4 : -Dmaven.multiModuleProjectDirectory=C:/tmp/TemplateEngine
[ERROR] BootClassPathSupported : false

только что создал папку "mkdir ./target/pit-reports", и она исчезла. это порождает проблему

<show>private</show>

Итак, мы можем сказать, что вы нашли ошибку в maven-javadoc-plugin:)

...