我有一个以下结构的小项目:
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 [ERROR] 获取链接时出错:D:\work\eclipse\java\FritzBox\phplib\target\javadoc-bundle-options。已忽略。 [...] [INFO] 正在生成“Test Javadoc”报告 --- maven-javadoc-plugin:3.1.0:test-aggregate-no-fork [ERROR] 获取链接时出错:D:\work\eclipse\java\FritzBox\phplib\target\javadoc-bundle-options。已忽略。 正在为包de.ps.pl.te.test加载源文件... 1个错误 [ERROR] 创建javadoc报告时出错: 退出码:2 - javadoc: error - No source files for package de.powerstat.phplib.templateengine.test 命令行是:[...]javadoc.exe @options @packages 请参阅'[...]'目录中生成的Javadoc文件。 org.apache.maven.reporting.MavenReportException: 退出码:2 - javadoc: error - No source files for package de.ps.pl.te.test 命令行是:[...]javadoc.exe @options @packages 请参阅'[...]\target\site\testapidocs'目录中生成的Javadoc文件。 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-由于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
其余消息仍然相同。
我还发现了一个可能涉及到的错误报告:
另外,我尝试排除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
- options
- packages
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上。
编辑3:
更新到Java 11.0.10或其他更新版本后,上述问题中的一些已经消失了。 但仍存在一个问题-我已经报告为bug。