6

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

我有一个根 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>

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

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

另一方面,为每个单独的模块生成 javadoc 效果很好并且符合预期。

我怎么了?

4

1 回答 1

7

插件配置可以放在两个层次上;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>

您可以configuration在零件内部放置一个execution来覆盖和专门化该执行的配置。

顺便说一句,你的<groupId>pom 是错误的。它应该是

<groupId>org.apache.maven.plugins</groupId>

并不是

<groupId>org.maven.apache.plugins</groupId>
于 2012-11-07T10:02:17.727 回答