Maven javadoc プラグインを使用すると、特定のパッケージを除外できますが、Javadoc を作成したいパッケージがたくさんあり、ほんの一握りのクラスしかありません。
除外するのではなく、含める方法はありますか?
また、パッケージには javadoc を必要とするクラスと必要としないクラスがあるため、パッケージ レベルではなくクラス レベルで処理を行いたいと考えています。
Maven javadoc プラグインを使用すると、特定のパッケージを除外できますが、Javadoc を作成したいパッケージがたくさんあり、ほんの一握りのクラスしかありません。
除外するのではなく、含める方法はありますか?
また、パッケージには javadoc を必要とするクラスと必要としないクラスがあるため、パッケージ レベルではなくクラス レベルで処理を行いたいと考えています。
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 サイトを構築します。
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
<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>
最後に、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
私の知る限り、パッケージ レベルでのみフィルタリングできます。ただし、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 を生成する際の問題は何ですか?