2009-07-28 5 views
18

Maven javadocプラグインを使用すると、特定のパッケージを除外できますが、たくさんのパッケージがあり、Javadocを生成したいクラスはほんの一握りです。Maven javadocプラグイン - 特定のクラスのみを含めるにはどうすればいいですか?

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

javadocを必要とするパッケージとそうでないクラスがあるため、パッケージレベルではなくクラスレベルで作業したいと思います。

答えて

5

私はJavadocを望んでいたと私はしたくなかったそれらのパッケージ内のクラスを与えたクラスを含む二つのパッケージを指定するsourcepath設定オプションを使用しましたJavadocのデフォルトアクセス。 show設定オプションを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> 

はしかし、これは本質的な回避策であると私は強くそれはjavadocのユーティリティでサポートされている、これはのmaven-javadocによってプラグインに対してenchancementでなければならないこと蒋介石さんのコメントに同意します。 http://jira.codehaus.org/browse/MJAVADOC

+0

メモRCrossの答えは以下のとおりです。 OPが要求した正確な修正ですが、受け入れられた答えよりもずっと遅れて追加されました。 –

+0

はい、これを行う能力は、受け入れられた回答が提出されてから数年後の2012年9月にmaven-javadoc-pluginに追加されました! – RCross

1

私が知る限り、パッケージレベルでしかフィルタリングできません。しかし、Javadocは公開型と保護型に対してのみ生成されます。型がデフォルトスコープまたはプライベートである場合、それらの型は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を生成する際に発生する問題は何ですか?

+0

特定のクラスに対してのみjavadocを指定する必要があると疑問に思うかもしれませんが、特定のクラスに対してjavadocを生成するようにmaven-javadoc-pluginを設定することは可能です。下の私の答えを見てください。 – shek

+0

それはクールです、あなたは毎日何かを学びます。あなたに+1してください –

+0

あなたの+1を自由に削除してください。設定例を考えてみると、maven-javadoc-pluginはjavadocユーティリティのすべての機能を尊重しないことに気付きました。だから、私は銃を飛ばした。私は特定のパッケージだけを含むようにプラグインを設定する方法の例を追加しました。これは、特定のパッケージを除外したときのあなたの答えをうまく補うものだと思います。 +1もあなたに。 – shek

14

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's javadoc utilityのラッパーです。そのため、javadocのドキュメントと設定のほとんどは、このプラグインにも当てはまります。 javadoc sourcepath parameterに関するSunのマニュアルを参照してください。

maven-javadoc-pluginの機能が異なる領域では、sourcepathパラメータに関するSunのマニュアルには、javadocユーティリティでgenerate javadoc for specific classesを使用することが可能であることが記載されています。この機能は、maven-javadoc-pluginでは使用できません。この例は、Sunのマニュアルに示されている:最後に

C:> cd C:\home\src\java\awt 
    C:> javadoc -d C:\home\html Button.java Canvas.java Graphics*.java 
+0

例がこの回答に追加されます。 – Supertux

+1

ご要望ごとに例が追加されました。例を書いてみると、元の答えが正しくないことが分かりました。私はそれ以来それを変更しました。 javadocユーティリティでサポートされている特定のクラスのjavadocの生成をサポートする拡張機能を要求するmaven-javadoc-pluginにバグを記録してください。 http://jira.codehaus.org/browse/MJAVADOC – shek

+0

['sourceFileIncludes'](https://maven.apache.org/)を使用して特定のファイルのみを含むようにmaven-javadoc-pluginを設定することは可能ですplugins/maven-javadoc-plugin/javadoc-mojo.html#sourceFileIncludes)要素を使用します。 –

7

それは、単にだあなたはMaven2を-プラグイン、例えばから構成タグ<subpackages/>を使用する場合:

<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> 
+0

Maven2のコマンドは以下の通りです: 'mvn -cpu -up -am -pl subProject clean javadoc:aggregate' – udoline

+0

詳細はこちらhttp://jira.codehaus.org/browse/MJAVADOC-82 – udoline

15

のmaven-javadocによってプラグインのバージョン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サイトを構築します。

+0

それは答えられました。おそらく、このフォローアップの回答がないと、それを見つけられなかったでしょう。 –

+0

関連:http://stackoverflow.com/questions/14518220/maven-how-do-i-exclude-specific-source-files-from-javadoc – Vince

関連する問題