20

Maven javadoc プラグインを使用すると、特定のパッケージを除外できますが、Javadoc を作成したいパッケージがたくさんあり、ほんの一握りのクラスしかありません。

除外するのではなく、含める方法はありますか?

また、パッケージには javadoc を必要とするクラスと必要としないクラスがあるため、パッケージ レベルではなくクラス レベルで処理を行いたいと考えています。

4

5 に答える 5

17

maven-javadoc-plugin バージョン 2.9 以降、構成でこれを行うことができます。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-javadoc-plugin</artifactId>
  <version>2.9</version>
  <configuration>
    ....
    <sourceFileIncludes>
      <include>Foo.java</include>
      <include>Bar.java</include>
    </sourceFileIncludes>
    <sourcepath>${basedir}/src/main/java/path/to/foo-and-bar</sourcepath>
    ....
  </configuration>
  ....

... 上記のクラスのみを含む Javadoc サイトを構築します。

于 2012-11-13T16:56:34.343 に答える
15

maven-javadoc-pluginを使用すると、特定の Java クラスを指定できません (ただし、javadoc ユーティリティを使用すると指定できます。以下を参照してください)。ただし、javadoc:javadoc ゴールのsourcepath構成オプションを使用すると、特定のパッケージを構成できます。この例は次のとおりです。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <charset>UTF-8</charset>
        <docencoding>UTF-8</docencoding>
        <docfilessubdirs>true</docfilessubdirs>
        <links>
            <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>
        </links>
        <show>protected</show>
        <source>1.5</source>
        <sourcepath>${basedir}/src/main/java/com/acme/foo</sourcepath>
    </configuration>
    <reportSets>
        <reportSet>
            <reports>
                <report>javadoc</report>
            </reports>
        </reportSet>
    </reportSets>
</plugin>

この例では、com.acme.fooパッケージ (サブパッケージを含む) の下のすべてのクラスで javadoc が生成されます。

この Maven プラグインは、 Sun の javadoc ユーティリティの単なるラッパーであることに注意してください。そのため、javadoc のドキュメントと構成のほとんどは、このプラグインにも当てはまります。javadoc sourcepath パラメータに関する Sun のドキュメントを参照してください。

maven-javadoc-plugin の機能が異なる領域では、sourcepath パラメータに関する Sun のドキュメントに、javadoc ユーティリティを使用して特定のクラスの javadoc を生成できることが記載されています。この機能は、maven-javadoc-plugin では使用できません。この例は、Sun のドキュメントに示されています。

  C:> cd C:\home\src\java\awt
  C:> javadoc -d C:\home\html Button.java Canvas.java Graphics*.java
于 2009-07-28T18:32:08.340 に答える
7

<subpackages/>Maven2-Pluginの構成タグを使用すると、次のようになります。

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.7</version>
    <configuration>
        <sourceEncoding>ISO-8859-1</sourceEncoding>
        <quiet>true</quiet>
        <aggregate>true</aggregate>
        <code>javadoc:aggregate</code>
        <code>javadoc:test-aggregate</code>         
        <doclet>gr.spinellis.umlgraph.doclet.UmlGraphDoc</doclet>
        <docletArtifact>
            <groupId>gr.spinellis</groupId>
            <artifactId>UmlGraph</artifactId>
            <version>4.6</version>
        </docletArtifact>
        <additionalparam>
            -inferrel -inferdep -quiet -hide java.*
            -collpackages java.util.* -qualify
            -postfixpackage -nodefontsize 9
            -nodefontpackagesize 7                          
        </additionalparam>

        <subpackages>
            de.interforum.gms.db.domain:de.interforum.sdr.db.domain
        </subpackages>

    </configuration>
    <executions>
      <execution>
        <goals>
          <goal>javadoc</goal>
          <goal>test-javadoc</goal>
        </goals>
        <phase>site</phase>
        <configuration>
          <!-- Specific configuration for the given reports ... -->
        </configuration>
      </execution>
    </executions>
</plugin>
于 2010-10-22T06:15:57.033 に答える
6

最後に、sourcepath構成オプションを使用して、Javadoc に必要なクラスを含む 2 つのパッケージを指定し、Javadoc にデフォルトでアクセスしたくないクラスをそれらのパッケージに指定しました。show構成オプションを public に設定すると、public へのアクセスを設定することで、Javadoc が作成されたクラスを選択できるようになりました。以下の完全な構成:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <configuration>
        <links>
            <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>
        </links>
        <source>1.5</source>
        <show>public</show>
        <doctitle>Foo API</doctitle>
        <title>Foo API</title>
        <bottom><![CDATA[Copyright notice]]></bottom>
        <sourcepath>${basedir}/src/main/java/com/foo/api;${basedir}/src/main/java/com/bar/api</sourcepath>
    </configuration>
</plugin>

ただし、これは基本的には回避策であり、maven-javadoc-plugin は javadoc ユーティリティでサポートされているため、これは機能強化になるはずであるという shek のコメントに強く同意します。http://jira.codehaus.org/browse/MJAVADOC

于 2009-07-29T12:25:55.810 に答える
1

私の知る限り、パッケージ レベルでのみフィルタリングできます。ただし、Javadoc は public および protected 型に対してのみ生成されます。型がデフォルト スコープまたはプライベートである場合、それらに対して生成される javadoc はありません。それらをデフォルトスコープにするということは、それらがパッケージ内の他のタイプから引き続き見えることを意味します.javadocが必要ない場合は、おそらく人々にそれらのタイプを使用させたくないので、とにかくこれはおそらく良いスコープです.

excludePackageNames 構成では、ワイルドカードを使用できます。したがって、これを許可するパッケージ名規則がある限り、大部分のパッケージを除外できます。

これらのパッケージがあるとします。

com.foo
com.foo.api
com.foo.internal   
com.foo.internal.core
com.foo.internal.util
com.foo.internal.ui
com.foo.ui

foo、foo.api、および foo.ui のみを公開する場合は、次のパターンが機能します。

<excludePackageNames>com.foo.internal.*:com.foo.bob</excludePackageNames>

代わりに、問題のあるタイプを別のパッケージに移動することもできますが、これはそうする正当な理由ではありません。

これらのタイプの javadoc を生成する際の問題は何ですか?

于 2009-07-28T18:11:24.403 に答える