首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是什么导致maven-javadoc-plugin目标测试-javadoc在错误上失败,但是test-javadoc -no-叉只是为了有警告。

是什么导致maven-javadoc-plugin目标测试-javadoc在错误上失败,但是test-javadoc -no-叉只是为了有警告。
EN

Stack Overflow用户
提问于 2017-09-23 20:22:11
回答 1查看 1.6K关注 0票数 3

我有一个带有Maven -和JDK8的maven项目。当我运行mvn javadoc:test-javadoc时,插件会报告文档--错误和停止,但是当我运行mvn javadoc:test-javadoc-no-fork时,插件会成功运行,只有一些警告。

问题是而不是如何修复或文档错误。插件发现了真正的文档-问题,需要修复,所以报告的错误的mvn javadoc:test-javadoc是正确的结果。

问题是:为什么mvn javadoc:test-javadoc-no-fork 不失败,但处理这些问题就像警告一样?

背景:

  • 这个项目是一个多模块的项目。
  • Maven版本: 3.3.9
  • maven-javadoc-plugin: 2.9.4 (3.0.0-m1也有相同的行为)
  • Java8

TracingServiceSpringTest中移植的问题实际上缺少抛出的DatatypeConfigurationException的文档。

代码语言:javascript
复制
/** scenario: some text... **/
@Test
public void testImport() throws DatatypeConfigurationException {...

运行mvn javadoc:test-javadoc时输出

代码语言:javascript
复制
[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时输出

代码语言:javascript
复制
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的部分:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2017-09-23 20:40:51

在尝试生成Javadoc,而不重复执行阶段生成源。的时候。从2.10版本开始,定义了两个新的报告,javadoc-no-forktest-javadoc-no-fork不会再次触发generate-sourcesgenerate-test-sources阶段。

当您使用test-javadoc-no-fork选项时,将跳过测试源生成,因此您的构建就成功了。

...generates项目的测试Javadoc文件。它执行标准的Javadoc工具,并支持工具使用的参数,而无需再次分叉生成测试源阶段。请注意,这个目标确实需要在站点生成之前生成测试源,例如通过调用mvn clean deploy site

另一方面,javadoc:test-javadoc再次编译测试源,并记录错误。

为项目生成测试Javadoc文件。它执行标准的Javadoc工具,并支持工具使用的参数。

所有这些都是关于<reportSets>

一组报表的多个规范,每个报表都有(可能)不同的配置。这是与构建中的<execution>并行的报告。

无论是no-fork类型,您都可以尝试将test-javadoc作为<reportSet>中的报告之一来解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46383942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档