我有一个maven项目,包含maven-javadoc-plugin和JDK8。当我运行mvn javadoc:test-javadoc
时,插件会报告文档错误并停止,但是当我运行mvn javadoc:test-javadoc-no-fork
时,插件运行成功并且只有一些警告。
问题是不如何修复或文档错误。该插件发现了需要修复的真实文档问题,因此报告的mvn javadoc:test-javadoc
错误是正确的结果。
问题是:为什么mvn javadoc:test-javadoc-no-fork
没有失败但是只是作为警告处理问题?
背景:
TracingServiceSpringTest
中的体育问题确实缺少投掷的文档DatatypeConfigurationException
/** scenario: some text... **/
@Test
public void testImport() throws DatatypeConfigurationException {...
运行mvn javadoc:test-javadoc
[INFO]
[INFO] <<< maven-javadoc-plugin:2.10.4:test-javadoc (default-cli) < generate-test-sources @ agrovet-server <<<
[INFO]
[INFO] --- maven-javadoc-plugin:2.10.4:test-javadoc (default-cli) @ agrovet-server ---
[INFO]
...
3 errors
9 warnings
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] PROJECT ............................................ SUCCESS [ 1.131 s]
[INFO] PROJECT :: Client .................................. SUCCESS [ 43.908 s]
[INFO] PROJECT :: Server .................................. FAILURE [ 44.774 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:36 min
[INFO] Finished at: 2017-09-23T21:33:33+02:00
[INFO] Final Memory: 96M/1573M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.10.4:test-javadoc (default-cli) on project PROJECT-server: An error has occurred in Test JavaDocs report generation:
[ERROR] Exit code: 1 - F:\workspaces\PROJECT\PROJECT-server\src\test\java\com\example\PROJECT\infrastructure\TracingServiceSpringTest.java:389: warning:
no @throws for javax.xml.datatype.DatatypeConfigurationException
[ERROR] public void testImport() throws DatatypeConfigurationException {
[ERROR] ^
...
[ERROR]
[ERROR] Command line was: "C:\Program Files\Java\jdk1.8.0_121\jre\..\bin\javadoc.exe" @options @packages
[ERROR]
[ERROR] Refer to the generated Javadoc files in 'F:\workspaces\PROJECT\PROJECT-server\target\site\testapidocs' dir.
[ERROR] -> [Help 1]
[ERROR]
...
运行mvn javadoc:test-javadoc-no-fork
8 warnings
[WARNING] Javadoc Warnings
[WARNING] F:\workspaces\PROJECT\PROJECT-server\src\test\java\com\example\PROJECT\infrastructure\TracingServiceSpringTest:389: warning: no @throws for javax.xml.datatype.DatatypeConfigurationException
[WARNING] public void testImport() throws DatatypeConfigurationException {
[WARNING] ^
...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] PROJECT ............................................ SUCCESS [ 0.454 s]
[INFO] PROJECT :: Client .................................. SUCCESS [ 0.011 s]
[INFO] PROJECT :: Server .................................. SUCCESS [ 6.763 [INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
...
相关的POM部分,即父pom.xml
(完整的pom太大了,但这是提到maven-javadoc-plugin
的唯一部分:
<dependencyManagement>
<dependencies>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.4</version>
</plugin>
</dependencies>
</dependencyManagement>
...
<reporting>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<reportSets>
<reportSet>
<reports>
<!--
javadoc-no-fork in order to prevent JavaDoc process from runing generate-source again
but this also requries that JavaDoc generation runs after compile: "mvn install site"
but not on a black project "mvn clean site"
-->
<report>javadoc-no-fork</report>
<report>test-javadoc-no-fork</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
答案 0 :(得分:0)
尝试Generate Javadoc without duplicate execution of phase generate-sources时。自版本2.10起定义了两个新报告,javadoc-no-fork
和test-javadoc-no-fork
不会再次触发generate-sources
或generate-test-sources
个阶段。
当您使用选项test-javadoc-no-fork
时,将跳过测试源生成,因此您的构建成功。
...生成测试的Javadoc文件 项目。它执行标准的Javadoc工具并支持 工具使用的参数,不分支生成测试源 再次相。请注意,此目标确实需要生成测试 网站生成之前的来源,例如通过调用
mvn clean deploy site
。
另一方面javadoc:test-javadoc
再次编译测试源并记录错误。
为项目生成测试Javadoc文件。它执行 标准的Javadoc工具,支持工具使用的参数。
使用<reportSets>
一组报告的多个规格,每个都有(可能) 不同的配置。这是与a平行的报告 在构建中
<execution>
。
这两种类型no-fork
,您可以尝试将test-javadoc
作为<reportSet>
中的一个报告来解决此问题。