【发布时间】:2019-06-01 19:14:00
【问题描述】:
我正在使用 jdk 12 构建语言级别 9 的 maven 项目。 编译可以成功,但无法正确生成javadoc。
简而言之,错误代码是:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:3.1.0:jar (default) on project commonx: MavenReportException: Error while generating Javadoc:
[ERROR] Exit code: 1 - javadoc: error - The code being documented uses modules but the packages defined in https://docs.oracle.com/javase/9/docs/api/ are in the unnamed module.
代码在https://github.com/XenoAmess/commonx/tree/3d875ee71ba1712b1b2bf76e89af08c5683fe57d
travis-ci 在https://travis-ci.org/XenoAmess/commonx/builds/540181778
我可以用 jdk9 或 10 做到这一点,但我找不到可以正确构建这个 javadoc 的 jdk 12。 我试过zulu,oracle open jdk,adopt open jdk,amazon-corretto(11),都是我能拿到的最新二进制版本。
我用的是win10 x64,但是根据travis-ci的报告,应该不是系统造成的,因为我在travis上使用的是linux x64。
如果有人可以使用任何 jdk 12 获得“maven install”,请告诉我该怎么做。
真诚的感谢。
更新:2019/06/03
我们将语言级别更改为 8。
然后它可以正确构建javadoc(在AdoptOpenJDK12上)
不知道为什么。
https://travis-ci.org/XenoAmess/commonx/builds/540461237
那好吧。
在他们修复 OpenJDK 中的错误之前,我们将保持在语言级别 8。
(但是这个库的某些部分将无法在 jre 8 上运行......无论如何。)
【问题讨论】:
-
首先我建议使用 JDK9+ 的所有插件的最新版本(例如 maven-compiler-plugin)...为什么要在代码中复制类而不是将它们用作依赖项(这会为以后的用户产生许多问题)等。
-
@khmarbaise 1. 我认为 maven-compiler-plugin 在这里没有问题,无法构建的是 javadoc。 2.请告诉我什么是“JDK9+ 插件”,以及为什么您认为使用“JDK9+ 插件”将有助于jdk12 构建javadoc。 3.“复制类”实际上是扩展的util类,因此很有用。即使不是,这与我在这里提出的问题无关。
-
当您比较 JDK 11 的文档目录树和 JDK 9 或 10 的目录树时,您会注意到结构发生了变化。即,现在有模块的子目录。似乎 JDK 11+ javadoc 总是期望使用模块的软件的新子目录。更改为语言级别 8 会有效地禁用模块。由于 JDK 9 和 10 应该是已经达到生命周期的中间版本,因此尚不清楚是否可以期望针对这些版本进行修复。
标签: java maven maven-3 java-9 java-12