2017-09-23 7 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은 왜 실패하지 않지만 경고처럼 문제를 처리합니까?


배경 : 3.3.9

  • 받는다는-javadoc에 플러그인 : 2.9.4 (동일한 동작

    • 프로젝트가 멀티 모듈 프로젝트를
    • 메이븐 버전입니다 발생 3.0.0-M1)
    • Java8
    ,824,321 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] 
    
    ... 
    

    출력을 실행할 때 0

    TracingServiceSpringTest의 자랑 해 보였다 문제는 정말

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

    출력 던진 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에서는 두 가지 새로운 보고서가 정의되어 있습니다. javadoc-no-forktest-javadoc-no-forkgenerate-sources 또는 generate-test-sources 단계를 다시 두 번째로 트리거하지 않습니다.

    test-javadoc-no-fork 옵션을 사용하면 테스트 소스 생성을 건너 뛰고 빌드가 성공합니다.

    ... 프로젝트의 테스트 Javadoc 파일을 생성합니다. 표준 Javadoc 도구를 실행하고 generate-test-sources 단계를 다시 fork하지 않고 도구에서 사용하는 매개 변수를 지원합니다. 이 목표는 사이트 생성 전에 소스를 생성 (예 : )해야합니다. 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

    @ 랄프, 아마 내가 처음에 당신을 잘못 잡았을거야. 내 테스트와 메인에서 각각 하나의 클래스로 동일한 것을 재현하려고 시도했지만, 두 명령에 모두 실패하지는 못했습니다. 또한 보고서의 하나로서'test-javadoc'을 포함 시켜서 도움이되는지 살펴볼 수 있습니다. – nullpointer