【问题标题】:Java 11/12 Javadoc with maven results in not generating Javadocs for tests带有 maven 的 Java 11/12 Javadoc 导致不生成用于测试的 Javadocs
【发布时间】:2019-09-04 16:15:47
【问题描述】:

我有一个结构如下的小项目:

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] 生成“测试 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 个错误

[ERROR] 创建 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

参考 '[...]\target\site\testapidocs' 目录中生成的 Javadoc 文件。

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

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

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

[...]

我研究了以下问题:

但我的问题似乎有所不同,并且基于 java 模块化。 所以问题是如何修复它 - 还是更多地提交错误报告?

编辑 1

现在我尝试使用 JDK 11.0.3 和 JDK 12.0.1 - 由于 oracle 证书和服务器问题,我无法下载 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 does not support module-info in a multi-release jar

我也尝试排除 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 生成的?)文件:

  • 参数文件
  • javadoc.bat
  • 选项

参数文件:

'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

编辑 3:

更新到 Java 11.0.10 或其他更新版本后,上述一些问题已经消失。 但仍然存在一个问题 - 我已将其报告为 bug

【问题讨论】:

  • 所以你没有把TETests和TE放在同一个包里?任何,两者都应该工作,但我猜所有与模块描述的组合还没有涵盖。我建议在issues.apache.org/jira/browse/MJAVADOC 上为它创建一个问题以及这个小项目作为 zip。
  • 您尝试使用 java 11 还是 java 13?我不会用这些版本复制它。也可以提供完整的 pom 和包信息。此外,如果您不使用模块信息,则您的应用程序不是模块化的。
  • 你使用的是哪个 Maven 版本?
  • 在一些公共 git repo 上提供一个最小的示例项目可能会更好
  • @Marinos An 我现在在 github 上提供了我的项目 - 请参阅 EDIT 2

标签: java maven javadoc java-11 java-12


【解决方案1】:

在测试时我看到了这个错误

[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 中发现了一个错误 :)

【讨论】:

  • 很高兴知道 - 我必须举报,还是您已经举报?
  • 我刚刚找到了解决办法。你发现了你应该报告它。
【解决方案2】:

我最近遇到了同样的错误。看起来是因为我的仓库中的 maven-shade-plugin 。我使用的是 1.6 的旧版本并将其升级到 3.2.4,此错误消失了。

【讨论】:

  • 这应该是对问题的评论,而不是答案。投反对票。
猜你喜欢
  • 2021-06-13
  • 2019-10-27
  • 2016-07-27
  • 2020-06-05
  • 2019-04-29
  • 2010-12-15
  • 2017-06-16
  • 2018-11-15
相关资源
最近更新 更多