Lombok Maven javadoc:使用生成的源汇总报告

时间:2015-04-10 14:07:41

标签: java maven code-generation lombok maven-javadoc-plugin

我有一个用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。

3 个答案:

答案 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>

这真的不理想。感觉有点像黑客。