簡體   English   中英

什么原因導致maven-javadoc-plugin目標test-javadoc失敗,但是test-javadoc-no-fork只是為了發出警告

[英]What causes maven-javadoc-plugin goal test-javadoc to fail on errors but test-javadoc-no-fork just to have warnings

我有一個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沒有失敗,但處理問題就像警告一樣?


背景:

  • 該項目是一個多模塊項目
  • Maven版本:3.3.9
  • maven-javadoc-plugin:2.9.4(3.0.0-M1也出現相同的行為)
  • Java8

TracingServiceSpringTest的運動問題確實缺少拋出的DatatypeConfigurationException文檔

/** scenario: some text... **/
@Test
public void testImport() throws DatatypeConfigurationException {...

運行mvn javadoc:test-javadoc時輸出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時的輸出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>

嘗試生成Javadoc而不重復執行階段生成源 從版本2.10開始,定義了兩個新報告, javadoc-no-forktest-javadoc-no-fork將不會再次觸發generate-sourcesgenerate-test-sources階段。

當您使用test-javadoc-no-fork選項時,將跳過測試源生成,因此您的構建成功。

...為項目生成測試Javadoc文件。 它執行標准的Javadoc工具並支持工具使用的參數,而無需再次分析generate-test-sources階段。 請注意,此目標確實需要在生成站點之前生成測試源,例如通過調用mvn clean deploy site

另一方面, javadoc:test-javadoc再次編譯測試源並記錄錯誤。

為項目生成測試Javadoc文件。 它執行標准的Javadoc工具並支持該工具使用的參數。


所有這些都與<reportSets>

一組報告的多個規范,每個報告具有(可能)不同的配置。 這是與構建中的<execution>並行的報告。

兩種類型的no-fork ,你可以嘗試將test-javadoc作為<reportSet>中的一個報告來解決這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM