我有一个多模块项目:
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工件!这就像父插件在所有子插件之后运行,即使它是使用一个应该在运行之前运行的阶段声明的.
知道如何在package阶段之前为module3的所有模块生成聚合的Javadoc,所以我可以包含这个Javadoc吗?
发布于 2016-05-16 17:51:00
我希望有人能找到更好的解决方案,但我做了一个解决办法,如果有一天它能帮助到某人的话:
我不允许Maven自己生成聚合的Javadoc。我通过将maven-javadoc-plugin插件封装在<profile>中来防止这种情况发生。我给了我一个"aggregatedJavadoc“身份。
然后,在module 3的pom.xml中,我添加了一个exec-maven-plugin插件,最终,它在父模块的"aggregatedJavadoc“配置文件中,在prepare-package阶段以编程方式调用aggregate目标!然后,我将得到的Javadoc复制到module3模块的构建输出文件夹中,因此它包含在生成的.jar中。
在我的示例中,exec-maven-plugin插件调用的脚本是自定义的,但是可以使用许多解决方案以编程方式调用目标Maven目标:例如,Apache调用程序。
https://stackoverflow.com/questions/37244984
复制相似问题