6

プロジェクト内のすべてのモジュールの集約Javadocサイトを作成しようとしていますが、満足のいく方法でプラグインを構成できないようです。主に、リンクを検出して特定のパッケージを除外している間は、javadocを集約することができないようです。基本的に、プラグインの構成は完全に無視されているようです。

一連のサブモジュールを参照し、次の構成を含むルート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

プラグイン構成は2つのレベルに配置できます。タグの内側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 に答える