我有一个用Maven构建的多模块java项目,我想用javadoc:aggregate
生成javadocs。项目结构如下:
parent
├─lomboklib
└─other
我也在使用Project Lombok在项目中生成一些方法。我已成功将其配置为使用单个模块,首先使用delombok运行Lombok maven plugin。对于单个模块(lomboklib),这将在
中生成源代码target/generated-sources/delombok
然后由 maven-javadoc-plugin 和 javadoc 工具处理。这最初是在This SO question中解决的。
如何配置javadoc:aggregate
报告以使用生成的来源?
我已经在Github中提出了问题的沙箱以及所有模块定义。理想情况下,我应该能够运行
mvn clean compile javadoc:aggregate
在父项目中,让整个项目编译并获取整个项目的javadoc。
答案 0 :(得分:3)
我创建了一个解决方法构建配置,它将从生成的源创建聚合的javadoc,尽管调用序列有两个步骤:
mvn package
mvn -N pre-site
构建配置现已发布在Github中。当前版本仅支持深度为1的项目树,但当然可以进行修改。它的工作原理是收集父项target
目录下的依赖项,然后运行包含的 Ant 脚本。
最后,如果在Jenkins下运行,可以通过执行shell 后续步骤在同一作业中调用mvn -N pre-site
。在我们的Jenkins版本中发布javadocs需要使用构建后操作“使用其他项目的发布者”。
答案 1 :(得分:2)
我从Github下载了示例项目以重新创建您的问题,并发现这是因为lombok-maven-plugin
在顶级pom中被不必要地配置 - 只有包含lombok代码的模块才需要它。只需删除该配置,javadoc:aggregate
就会按预期运行。
答案 2 :(得分:1)
我遇到同样的问题,并且我已经能够通过直接从父项目引用源路径来解决这个问题。
为您的父pom的maven-javadoc-plugin尝试此配置。
<configuration>
<sourcepath>
lomboklib/target/generated-sources/delombok;
other/target/generated-sources/delombok
</sourcepath>
</configuration>
这真的不理想。感觉有点像黑客。