我有一个多模块项目:
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
项目的 prepare-package 阶段运行parent
插件的原因:我希望生成Javadoc 在完成module3
的打包之前,我可以将其包含在内(例如,通过使用maven-antrun-plugin
插件复制它。)
但是,这是我的问题,似乎即使我使用 prepare-package 阶段,当package
阶段运行module3
时,也不会生成聚合的Javadoc {1}}神器!这就像是在所有子插件之后运行父插件时,即使它是使用应该在之前运行的阶段声明...
关于如何在package
的{{1}}阶段之前为所有模块生成聚合Javadoc的任何想法,所以我可以包含那个Javadoc?
答案 0 :(得分:0)
我希望有人找到更好的解决方案,但这是我做过的解决方法,如果有一天可以帮助某人:
我不让Maven自己生成聚合的Javadoc。我通过将maven-javadoc-plugin
插件包装在<profile>
中来阻止这种情况。我给了我一个“aggregatedJavadoc”id。
然后,在module3的pom.xml
中,我添加了一个exec-maven-plugin
插件,最终以编程方式在父模块的“aggregatedJavadoc”配置文件中调用aggregate
目标, prepare-package
阶段!然后我将生成的Javadoc复制到module3
模块的构建输出文件夹,因此它包含在生成的.jar中。
exec-maven-plugin
插件调用的脚本在我的情况下是自定义的,但是可以使用许多解决方案以编程方式调用目标Maven目标:Apache Maven Invoker,例如。