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

yeg*_*256 6 maven-2 javadoc

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

...
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
        </plugin>
    </plugins>
</build>
...
Run Code Online (Sandbox Code Playgroud)

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

...
[WARNING] Removing: aggregate from forked lifecycle, 
to prevent recursive invocation.
...
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

nai*_*kus 10

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

  <plugin>
    <artifactId>maven-javadoc-plugin</artifactId>
    <configuration>
      <aggregate>true</aggregate> <!-- this enables aggretation -->
    </configuration>
  </plugin>
Run Code Online (Sandbox Code Playgroud)

在命令行类型上:

mvn javadoc:aggregate
Run Code Online (Sandbox Code Playgroud)

编辑:

好吧,我做了一些挖掘maven插件的jira,发现所有的javadoc插件mojos都注明了@aggregator.但是maven的聚合器似乎存在问题,这个问题已在此处提交

这里这里还有一些相关的错误,还有一些

这似乎是maven聚合器的阻塞问题,因为像clover这样的插件不会运行.

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

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

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

  • 不推荐使用`aggregate`配置参数:http://maven.apache.org/plugins/maven-javadoc-plugin/aggregate-mojo.html#aggregate (3认同)