2011-10-10 85 views
10

具體而言,我試圖運行maven-javadoc插件,但每當我更改父/聚合器pom和所有孩子的版本號時,第一次運行構建它會失敗,因爲javadoc首先運行,並且因爲尚未構建,所以無法從模塊中找到任何新版本的軟件包。如何執行maven插件_after_所有模塊構建完成

我通常最終不得不爲一個構建評論javadoc,然後在新版本的nexus中有可用包後重新添加它。但是,這可能意味着我一直在一個構建舊源代碼罐上構建javadoc。

我讀過關於把另一個模塊的建議取決於其他的,但我不認爲我可以得到一個模塊來構建對等模塊的javadoc。讓它在父類中構建所有模塊的所有javadoc,我只需要它在稍後發生。謝謝。這是我的javadoc插件配置。

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-javadoc-plugin</artifactId> 
        <inherited>false</inherited> 
        <executions> 
         <execution> 
          <id>generate-javadoc</id> 
          <phase>package</phase> 
          <goals> 
           <goal>aggregate</goal> 
          </goals> 
          <configuration> 
           <aggregate>true</aggregate> 
           <links> 
            <link>http://java.sun.com/javase/6/docs/api</link> 
            <link>http://java.sun.com/javaee/5/docs/api</link> 
           </links> 
           <maxmemory>512</maxmemory> 
           <doclet>org.umlgraph.doclet.UmlGraphDoc</doclet> 
           <docletArtifact> 
            <groupId>org.umlgraph</groupId> 
            <artifactId>doclet</artifactId> 
            <version>5.2</version> 
           </docletArtifact> 
           <additionalparam> 
            -inferrel -inferdep -outputencoding utf8 -hide 
            java.* -collpackages 
            java.util.* 
            -qualify -postfixpackage 
            -nodefontsize 9 -nodefontpackagesize 7 
           </additionalparam> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
+0

嘗試階段安裝而不是執行包 –

+0

安裝階段似乎沒有幫助,因爲父/聚合器項目是首先在反應堆順序中構建的,因此它的所有階段都是在任何模塊構建之前運行的。因此,無論是在第一個模塊構建完成之前安裝還是打包,javadoc對模塊的依賴關係都不能滿足,因爲它們並未構建。 –

回答

0

一個辦法來解決這個問題是不調用插件的javadoc在正常的Maven生命週期階段;而是單獨運行它。

具體而言,請從上述plugin定義中刪除<phase>標記。

從父母運行mvn install javadoc:javadoc

這將構建並安裝所有模塊和父級,然後在其上運行javadoc。

+0

感謝您的回覆,但不幸的是,這不是一回事。通過上面的配置,我可以在頂級目標目錄中獲得一個site/apidocs目錄,並將所有模塊javadoc放在一個位置。 如果我按照你的建議,每個模塊都建立了自己的javadoc,但是並沒有頂級的javadoc。 –

+0

@John。我猜'javadoc:javadoc'不會聚合。也許'javadoc:aggregate'呢? – Raghuram

+0

非常感謝回覆。它的確如此,但是由於頂級pom首先在反應堆順序中運行,其他模塊都沒有構建,而javadoc插件認爲它們都是依賴關係,所以它斷言它找不到必需的jar。我不確定在這種情況下聚合是如何工作的。有沒有辦法讓反應堆順序中的頂層pom LAST?如果它的第一個我不明白爲什麼它不會總是試圖找到尚未構建的模塊的工件。 –

0

您的pom的<build>部分是您的javadoc插件聲明。你應該考慮把它移動到<reporting>部分看這link

相關問題