【问题标题】:How to use javadoc:aggregate properly in multi-module maven project?如何在多模块 maven 项目中正确使用 javadoc:aggregate?
【发布时间】:2011-03-25 04:14:10
【问题描述】:

这是我在一个多模块项目中的父 pom.xml 文件(其中的一部分):

...
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
        </plugin>
    </plugins>
</build>
...

这个插件在所有子模块中都是继承的,我认为这不是一个正确的方法。当我运行mvn javadoc:aggregate 时,文档在target/site/apidoc 中生成,但日志中充满了警告:

...
[WARNING] Removing: aggregate from forked lifecycle, 
to prevent recursive invocation.
...

我做错了什么?

【问题讨论】:

    标签: maven-2 javadoc


    【解决方案1】:

    您需要为此插件启用聚合:

      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <aggregate>true</aggregate> <!-- this enables aggretation -->
        </configuration>
      </plugin>
    

    在命令行输入:

    mvn javadoc:aggregate
    

    编辑:

    好的,我对 maven 插件的 jira 进行了一些挖掘,发现所有 javadoc 插件 mojo 都已使用 @aggregator 进行注释。但是maven的聚合器似乎存在问题,该问题已提交here

    还有herehere相关的bug等等

    这似乎是 maven 聚合器的一个阻塞问题,因为某些插件,例如三叶草不会运行。

    总而言之,你没有做错任何事

    只需切换回不使用 @aggregator mojo 注释的早期版本的 maven-javadoc-plugin,您将不会收到警告(除非您使用早期版本中不可用的 javadoc 插件的某些功能)

    附带说明,如果您将 javadoc 插件作为报告运行,则 @aggregator 将被忽略。

    【讨论】:

    • aggregate 配置参数已弃用:maven.apache.org/plugins/maven-javadoc-plugin/…
    • @FaZend 您没有指定 javadoc 插件版本和 maven 版本。它在 2.5 版中已弃用。反正我不知道这个事实
    • 我认为问题不在于这个特定的插件,而在于我的多模块项目组织。聚合插件由子模块继承,这是报告警告的地方。我认为我需要重新组织我的根项目,但我不知道如何。顺便说一句,我切换到 2.4 版,结果相同 - 我仍然有警告,但使用了其他插件(checkstyle、pmd 等)。问题出在 javadoc 内部的聚合机制中。
    • @FaZend.com 从问题的链接(已经在答案中)来看,问题似乎是当使用 @aggregate 注释对 mojo 进行注释时。 IMO javadoc 插件中没有特殊的聚合机制。这也是由其他各种插件引起的,例如三叶草插件。 maven 聚合器会导致分叉生命周期出现问题。你的项目中有这些吗?看起来它可以在没有任何分叉的生命周期的情况下正常工作
    猜你喜欢
    • 2017-12-26
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 2012-06-29
    • 2018-02-06
    • 1970-01-01
    相关资源
    最近更新 更多