2017-09-23 24 views
3

私はmaven-javadoc-pluginとJDK8のMavenプロジェクトを持っています。 mvn javadoc:test-javadocを実行すると、プラグインはドキュメントのエラーと停止を報告しますが、mvn javadoc:test-javadoc-no-forkを実行するとプラグインは正常に実行され、警告が表示されます。maven-javadoc-pluginの目標test-javadocがエラーで失敗するのはなぜですか?test-javadoc-no-forkは警告を受け取るだけです

質問はNOT修正方法またはドキュメントエラーです。このプラグインでは、修正が必要な実際のドキュメントの問題が検出されたため、報告されたエラーmvn javadoc:test-javadocが正しい結果になります。

質問:なぜmvn javadoc:test-javadoc-no-forkは失敗しないのですが、警告と同じように問題を処理するのはなぜですか?


背景:

  • プロジェクトは
  • マルチモジュールプロジェクトでMavenのバージョン:3.3.9
  • 達人-のJavadoc - プラグイン:2.9.4(同じ動作)3.0.0-M1で発生
  • Java8

mvn javadoc:test-javadoc-no-fork

0を実行しているときに 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] 

... 

出力を実行するときにTracingServiceSpringTestで遊ばし問題は本当にスローDatatypeConfigurationException

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

出力のために不足しているドキュメントを持っています

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(完全なポンポンはあまりにも巨大であるが、これは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

Generate Javadoc without duplicate execution of phase generate-sourcesしようとしているとき。バージョン2.10では、2つの新しいレポートが定義されており、javadoc-no-forktest-javadoc-no-forkは、もう一度generate-sourcesまたはgenerate-test-sourcesのフェーズを再開しません。

オプションtest-javadoc-no-forkを使用すると、テストソースの生成がスキップされ、ビルドが成功します。

... プロジェクト用のテストJavadocファイルを生成します。これは、標準のJavadocツールを実行し、generate-test-sources フェーズを再度フォークせずに、ツールで使用される パラメータをサポートします。この目標は、サイト生成の前に、例えば、 のソースを生成する必要があることに注意してください。 mvn clean deploy siteを呼び出してください。

javadoc:test-javadocもう一度、テストソースがコンパイルされ、エラーが記録されます。

は、プロジェクトのテストJavadocファイルを生成します。 標準のJavadocツールを実行し、ツールで使用されるパラメータをサポートします。レポートのセットの<reportSets>

複数仕様


その全て、各々が(おそらく) 異なる構成。これは、ビルド中に <execution>と並行して報告されています。

タイプno-forkの両方、あなたはこれを解決するために<reportSet>のレポートの一つとしてtest-javadocを試してみて含めることができます。

+0

しかし、この問題はコンパイラの問題ではありません。問題は、スローされた例外のjavadocが欠落していることです。 - そして、javadocツールは 'test-javadoc-no-fork'を実行して(警告を生成する)問題を認識しても、ビルドを止めません。 – Ralph

+0

@Ralphおそらく私はあなたが最初は間違っています。私のテストとメインでそれぞれを1つのクラスで再現しようとすると、私は両方のコマンドの失敗を得ることができませんでした。また、 'test-javadoc'をレポートの1つとして組み込み、それが役立つかどうか確認することもできます。 – nullpointer

関連する問題