带有生成源的 Lombok Maven javadoc:aggregate 报告

Lombok Maven javadoc:aggregate report with generated sources

我有一个用 Maven 构建的多模块 java 项目,我想用 javadoc:aggregate 生成 java 文档。项目结构如下:

parent
├─lomboklib
└─other

我也在用Project Lombok to generate some methods in the project. I have successfully configured it to work with single modules by first running delombok with the Lombok maven plugin。对于单个模块 (lomboklib),这将在

中生成源代码
target/generated-sources/delombok

然后由 maven-javadoc-pluginjavadoc 工具处理。这最初是在 This SO question.

中解决的

如何配置 javadoc:aggregate 报告也使用生成的来源?

我已经在 Github 中为所有模块定义设置了一个问题沙箱。理想情况下,我应该能够 运行

mvn clean compile javadoc:aggregate

在父项目中,编译整个项目并获取整个项目的java文档。

我从 Github 下载了示例项目来重现您的问题,发现这是因为 lombok-maven-plugin 在顶级 pom 中被不必要地配置了——只有模块需要它包含龙目岛代码。通过简单地删除该配置,javadoc:aggregate 的行为符合预期。

我遇到了同样的问题,我已经能够通过直接从父项目引用源路径来解决这个问题。

为您的父 pom 的 maven-javadoc-plugin 尝试此配置。

<configuration>
    <sourcepath>
        lomboklib/target/generated-sources/delombok;
        other/target/generated-sources/delombok
    </sourcepath>
</configuration>

确实不太理想。感觉有点hack。

我创建了一个解决方法构建配置,它将从生成的源中创建聚合的 javadoc,尽管调用序列有两个步骤:

mvn package
mvn -N pre-site

构建配置现已在 Github 中发布。当前版本只支持深度为一的项目树,当然可以修改。它通过在父 target 目录下收集依赖项然后 运行 包含的 Ant 脚本来工作。

最后,如果运行在Jenkins下,可以通过Executeshell[=26=在同一个作业中调用mvn -N pre-site ] 步。在我们的 Jenkins 版本中发布 javadoc 需要使用 post-build 操作“使用来自另一个项目的发布者”。