【问题标题】:Lombok Maven javadoc:aggregate report with generated sourcesLombok Maven javadoc:生成源的聚合报告
【发布时间】:2015-06-16 07:12:12
【问题描述】:

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

parent
├─lomboklib
└─other

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

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

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

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

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

mvn clean compile javadoc:aggregate

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

【问题讨论】:

  • 好问题。具有数十个全部使用 lombok 的模块的项目上的相同问题。您希望有某种方法可以覆盖 javadoc:aggregate 在模型中递归时查看的子目录。我们正在使用来自@Ben M. 的 hacky 解决方案。

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


【解决方案1】:

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

mvn package
mvn -N pre-site

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      为你的父 pom 的 maven-javadoc-plugin 尝试这个配置。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-27
        • 1970-01-01
        • 2016-10-04
        • 2015-11-23
        • 2014-05-15
        • 1970-01-01
        • 2021-12-30
        相关资源
        最近更新 更多