2016-05-16 41 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

相关问题