34

我有一个用 Maven 构建的多模块 java 项目,我想用javadoc:aggregate. 项目结构如下:

parent
├─lomboklib
└─other

我也在使用Project Lombok在项目中生成一些方法。通过首先使用Lombok maven 插件运行delombok ,我已成功将其配置为与单个模块一起使用。对于单个模块(lomboklib),这将在

target/generated-sources/delombok

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

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

我已经用Github中的所有模块定义建立了一个问题沙箱。理想情况下,我应该能够运行

mvn clean compile javadoc:aggregate

在父项目中,编译整个项目并获取整个项目的 javadocs。

4

3 回答 3

3

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

mvn package
mvn -N pre-site

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

最后,如果在 Jenkins 下运行,mvn -N pre-site可以通过Execute shell post 步骤在同一个作业中调用。在我们的 Jenkins 版本中发布 javadocs 需要使用构建后操作“使用来自另一个项目的发布者”。

于 2016-07-07T12:04:03.530 回答
2

我从 Github 下载了示例项目来重新创建您的问题,并发现这是因为lombok-maven-plugin在顶级 pom 中进行了不必要的配置 - 只有包含 lombok 代码的模块才需要它。通过简单地删除该配置,javadoc:aggregate可以按预期运行。

于 2015-05-17T08:35:11.293 回答
2

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

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

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

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

于 2016-02-05T19:46:34.673 回答