2012-11-07 3 views
4

내 프로젝트의 모든 모듈에 대해 집합 Javadoc 사이트를 만들고 싶지만 만족스러운 방식으로 플러그인을 구성 할 수 없습니다. 주로, 링크를 감지하고 특정 패키지를 제외하는 동안 javadoc을 모으는 것처럼 보이지는 않습니다. 본질적으로, 플러그인 구성은 완전히 무시됩니다.Maven에서 Javadoc 집합 구성하기

<modules> 
    <module>foo</module> 
    <module>bar</module> 
</modules> 
<build> 
<plugins> 
    <plugin> 
     <groupId>org.maven.apache.plugins</groupId> 
     <artifactId>maven-javadoc-plugin</artifactId> 
     <version>2.9</version> 
     <executions> 
      <execution> 
       <id>aggregate</id> 
       <phase>site</phase> 
       <goals> 
        <goal>aggregate</goal> 
       </goals> 
       <configuration> 
        <links> 
        <link>http://docs.oracle.com/javase/6/docs/api</link> 
        <link>http://static.netty.io/3.5/api</link> 
        <link>http://google-guice.googlecode.com/git/javadoc</link> 
        <link>http://docs.guava-libraries.googlecode.com/git-history/release/javadoc</link> 
        <link>http://fasterxml.github.com/jackson-databind/javadoc/2.0.4</link> 
        <link>https://developers.google.com/protocol-buffers/docs/reference/java</link> 
        </links> 
        <bootclasspath>${sun.boot.class.path}</bootclasspath> 
        <additionalJOption>-J-Xmx1024m</additionalJOption> 
        <detectJavaApiLink>true</detectJavaApiLink> 
        <detectLinks>true</detectLinks> 
        <excludePackageNames>*.testing.*</excludePackageNames> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 
</build> 

하지만이 설정으로 mvn javadoc:aggregate을 실행할 때, 나는 어떤을 가진 javadoc의 사이트와 끝까지 :

나는 서브 모듈의 무리를 말한다 다음과 같은 구성을 포함하는 루트의 pom.xml을 참조 된 라이브러리 중 하나에 링크되며 여전히 모든 테스트 클래스를 포함합니다.

선언 된 각 링크 소스에 대한 패키지 목록을 다운로드하려고하는 플러그인이 표시되지 않습니다.

한편, 각 모듈에 대한 javadoc 생성은 예상대로 잘 작동합니다.

무엇이 잘못 되었나요?

답변

4

플러그인 구성은 두 가지 레벨에 배치 할 수 있습니다. execution 태그 내부 또는 외부 ("글로벌").

구성이 execution 태그 안에 있으면 특정 실행에 속합니다. 귀하의 경우에는 mvn site을 실행해야만 해당 단계에 바인딩되므로 실행할 수 있습니다.

mvn javadoc:aggregate 명령을 사용하면 "전역"구성을 찾습니다. 귀하의 pom에는 그러한 구성이 없으므로 기본 구성을 사용합니다.

이 대신에 플러그인 구성을 변경

: 당신은 무시하고 그 실행을위한 구성을 전문으로하는 execution 부분 내부에 configuration을 배치 할 수 있습니다

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-javadoc-plugin</artifactId> 
    <version>2.9</version> 
    <configuration> 
     <links> 
      <link>http://docs.oracle.com/javase/7/docs/api</link> 
      <link>http://static.netty.io/3.5/api</link> 
      <link>http://google-guice.googlecode.com/git/javadoc</link> 
      <link>http://docs.guava-libraries.googlecode.com/git-history/release/javadoc</link> 
      <link>http://fasterxml.github.com/jackson-databind/javadoc/2.0.4</link> 
      <link>https://developers.google.com/protocol-buffers/docs/reference/java</link> 
     </links> 
     <bootclasspath>${sun.boot.class.path}</bootclasspath> 
     <additionalJOption>-J-Xmx1024m</additionalJOption> 
     <detectJavaApiLink>true</detectJavaApiLink> 
     <detectLinks>true</detectLinks> 
     <excludePackageNames>*.testing.*</excludePackageNames> 
    </configuration> 
    <executions> 
     <execution> 
      <id>aggregate</id> 
      <phase>site</phase> 
      <goals> 
       <goal>aggregate</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

.

BTW<groupId>은 잘못된 것입니다. 그것은

<groupId>org.apache.maven.plugins</groupId> 

하지

<groupId>org.maven.apache.plugins</groupId> 
해야한다