2016-05-16 74 views
0

我有一個multimodules項目:Maven的Javadoc的插件的「聚集」的目標和階段

parent 
    |____ module1 
    |____ module2 
    |____ module3 

我要生成聚集 Javadoc文檔的所有模塊。這是通過使用在parent的pom.xml的是這樣的(其中有一個POM包裝並定義兒童模塊):

//... 
<modules> 
    <module>module1</module> 
    <module>module2</module> 
    <module>module3</module> 
</modules> 
//... 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.10.3</version> 
      <executions> 
       <execution> 
        <id>aggregate</id> 
        <goals> 
         <goal>aggregate</goal> 
        </goals> 
        <phase>prepare-package</phase> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

- 聚合的Javadoc產生是正確的,行之有效!

但問題是,我需要在module3 final .jar包括生成的聚合Javadoc!換句話說,我希望生成的module3.jar包含生成的所有模塊的聚合Javadoc的副本!

這就是爲什麼我嘗試運行在maven-javadoc-plugin插件在parent項目準備,包裝階段:我想會產生之前的module3包裝完成的Javadoc,所以我可以包括它(例如使用maven-antrun-plugin插件複製它)。

但是,這是我的問題,看來即使我使用準備包階段,當package階段運行的module3神器尚未產生聚合的Javadoc!這是如果父插件後所有的孩子插件運行一樣,哪怕是使用這應該之前運行相宣佈...

我如何能產生聚集的Javadoc任何想法對於所有模塊之前的package階段module3,所以我可以包含那個Javadoc?

回答

0

我希望有人找到一個更好的解決方案,但這裏的解決辦法我做到了,如果它可以幫助別人第一天:

我不讓Maven的本身產生聚集的Javadoc。我通過將maven-javadoc-plugin插件封裝在<profile>中來防止這種情況發生。我給了我的「聚合Javadoc」ID。

然後,在單詞數的pom.xml,我添加了一個exec-maven-plugin插件,歸根結底,編程調用aggregate目標,在「aggregatedJavadoc」配置文件,父模塊上,在prepare-package階段!然後,我將生成的Javadoc複製到module3模塊的生成輸出文件夾,以便將其包含在生成的.jar中。

exec-maven-plugin插件調用的腳本在我的情況下是自定義的,但許多解決方案都可以用於以編程方式調用目標Maven目標:例如Apache Maven Invoker

相關問題