2012-11-07 31 views
4

我正在嘗試爲我的項目中的所有模塊創建一個聚合Javadoc站點,但似乎無法以令人滿意的方式配置插件。主要是,我似乎無法在檢測鏈接和排除某些軟件包的同時將javadoc聚合在一起。從本質上看,插件的配置完全被忽略。在Maven中配置Javadoc聚合

我有一個根的pom.xml引用了一堆的子模塊,幷包含以下配置:

<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網站鏈接到任何引用的庫,並且仍然包含所有的測試類。

我什至不看到插件試圖下載每個聲明的鏈接源的軟件包列表。

另一方面,爲每個單獨的模塊生成javadoc的效果和預期的一樣。

我得到什麼錯誤?

回答

4

插件配置可以放在兩個層次上;在execution標籤內或其外部(「全局」)。

當配置位於execution標記內時,它屬於該特定執行。在你的情況下,你將不得不運行mvn site來執行它,因爲它必然會被執行。

當使用mvn javadoc:aggregate命令時,它會查找「全局」配置。在你的pom中沒有這樣的配置,因此它使用默認配置。

更改插件配置到這個代替:

<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> 

你可以把一個configurationexecution部分內覆蓋,專門用於該執行的配置。

BTW<groupId>在你的pom中是錯誤的。它應該是

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

,而不是

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