如何使用javadoc:在多模块maven项目中正确聚合?

时间:2010-08-04 09:44:25

标签: maven-2 javadoc

这是我在多模块项目中的父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.
...

我做错了什么?

1 个答案:

答案 0 :(得分:10)

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

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

在命令行上键入:

mvn javadoc:aggregate

编辑:

好的,我做了一些挖掘maven插件的jira,发现所有的javadoc插件mojos都是用@aggregator注释的。但是maven的聚合器似乎存在问题,问题已归档here

还有相关的错误herehere以及其他一些

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

总结一下,你没有做错任何事

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

另外,如果您将javadoc插件作为报告运行,则忽略@aggregator。