Maven javadoc插件 - 我怎么才能只包含某些类?

Sup*_*tux 18 java maven-2 javadoc maven-plugin

使用Maven javadoc插件可以排除某些包 - 但是我有很多包,只有少数几个我想要生成Javadoc的类.

有没有办法包括而不是排除?

我也想在类级别而不是包级别上做事情,因为我在一个包中需要javadoc和一些不需要javadoc的类.

RCr*_*oss 16

从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>
  ....
Run Code Online (Sandbox Code Playgroud)

...它将构建一个仅包含上述类的Javadoc站点.


she*_*hek 14

使用maven-javadoc-plugin,您无法指定特定的java classess(尽管您可以使用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>
Run Code Online (Sandbox Code Playgroud)

在此示例中,com.acme.foo包下的所有类(包括子包)都将生成javadoc.

应该注意的是,这个Maven插件只是Sun的javadoc实用程序的包装器.因此,javadoc的大多数文档和配置都适用于此插件.请参阅Sun有关javadoc sourcepath参数的文档.

在maven-javadoc-plugin功能不同的区域中,Sun的sourcepath参数文档提到可以使用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
Run Code Online (Sandbox Code Playgroud)


udo*_*ine 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>
Run Code Online (Sandbox Code Playgroud)


Sup*_*tux 5

最后,我使用sourcepath配置选项指定了两个包含我想要Javadoc的类的包,并在那些我不希望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>
Run Code Online (Sandbox Code Playgroud)

然而,这基本上是一种解决方法,我非常同意shek的评论,即这应该是对maven-javadoc-plugin的增强,因为它受到javadoc实用程序的支持.http://jira.codehaus.org/browse/MJAVADOC