我有一个结构如下的小项目:
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.忽略了它。
正在加载软件包的源文件.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
请参阅在 '[...]\target\site\testapidocs' dir.
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)
[...]
我研究了以下问题:
- Maven, javadoc : 没有包的源文件
但我的问题似乎是不同的,并且基于 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 不支持多发行版 jar 中的模块信息
我也试图排除模块信息.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
在目标\站点\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:ProgrammeJavajdk-11.0.3binjavadoc.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 或其他更新版本后消失了。 但是仍然存在一个问题 - 我已将其报告为错误。
在测试时,我看到了此错误
[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:tmpTemplateEnginetargetpit-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 :)中发现了一个错误
我最近遇到了同样的错误。看起来是因为我的存储库中的 maven-shade-plugin。我使用的是旧版本的 1.6 并将其升级到 3.2.4,但此错误消失了。