在Maven中配置Javadoc聚合

Jul*_*and 6 javadoc maven

我正在尝试为我项目中的所有模块创建一个聚合Javadoc站点,但我似乎无法以令人满意的方式配置插件.主要是,我似乎无法在检测链接和排除某些包时聚合javadoc.从本质上讲,似乎完全忽略了插件的配置.

我有一个root pom.xml,它引用了一堆子模块并包含以下配置:

<modules>
    <module>foo</module>
    <module>bar</module>
</modules>
<build>
<plugins>
   <plugin>
       <groupId>org.maven.apache.plugins</groupId>
       <artifactId>maven-javadoc-plugin</artifactId>
       <version>2.9</version>
       <executions>
           <execution>
               <id>aggregate</id>
               <phase>site</phase>
               <goals>
                   <goal>aggregate</goal>
               </goals>
               <configuration>
                  <links>
                    <link>http://docs.oracle.com/javase/6/docs/api</link>
                    <link>http://static.netty.io/3.5/api</link>
                    <link>http://google-guice.googlecode.com/git/javadoc</link>
                    <link>http://docs.guava-libraries.googlecode.com/git-history/release/javadoc</link>
                    <link>http://fasterxml.github.com/jackson-databind/javadoc/2.0.4</link>
                    <link>https://developers.google.com/protocol-buffers/docs/reference/java</link>
                  </links>
                  <bootclasspath>${sun.boot.class.path}</bootclasspath>
                  <additionalJOption>-J-Xmx1024m</additionalJOption>
                  <detectJavaApiLink>true</detectJavaApiLink>
                  <detectLinks>true</detectLinks>
                  <excludePackageNames>*.testing.*</excludePackageNames>
               </configuration>
           </execution>
      </executions>
  </plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

但是,当我mvn javadoc:aggregate使用此设置运行时,我最终得到一个javadoc站点,该站点没有指向任何引用库的链接,并且仍包含所有测试类.

我甚至没有看到插件试图下载每个声明的链接源的包列表.

另一方面,为每个单独的模块生成javadoc可以正常工作并且符合预期.

我错了什么?

mab*_*aba 6

插件配置可以放在两个级别上; execution标签内部或外部("全局").

当配置在execution标记内部时,它属于该特定执行.在您的情况下,您必须运行mvn site它才能执行,因为它绑定到该阶段.

使用该mvn javadoc:aggregate命令时,它会查找"全局"配置.在你的pom中没有这样的配置,因此它使用默认配置.

将您的插件配置更改为:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.9</version>
    <configuration>
        <links>
            <link>http://docs.oracle.com/javase/7/docs/api</link>
            <link>http://static.netty.io/3.5/api</link>
            <link>http://google-guice.googlecode.com/git/javadoc</link>
            <link>http://docs.guava-libraries.googlecode.com/git-history/release/javadoc</link>
            <link>http://fasterxml.github.com/jackson-databind/javadoc/2.0.4</link>
            <link>https://developers.google.com/protocol-buffers/docs/reference/java</link>
        </links>
        <bootclasspath>${sun.boot.class.path}</bootclasspath>
        <additionalJOption>-J-Xmx1024m</additionalJOption>
        <detectJavaApiLink>true</detectJavaApiLink>
        <detectLinks>true</detectLinks>
        <excludePackageNames>*.testing.*</excludePackageNames>
    </configuration>
    <executions>
        <execution>
            <id>aggregate</id>
            <phase>site</phase>
            <goals>
                <goal>aggregate</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

您可以configurationexecution部件内部放置以覆盖和专门化该执行的配置.

顺便说一句<groupId>是错在你的POM.它应该是

<groupId>org.apache.maven.plugins</groupId>
Run Code Online (Sandbox Code Playgroud)

并不是

<groupId>org.maven.apache.plugins</groupId>
Run Code Online (Sandbox Code Playgroud)