Maven javadoc插件-如何只包含某些类?
使用Maven javadoc插件,您可以排除某些包——但是我有很多包,只有少数几个类需要生成javadoc 有没有办法包括而不是排除Maven javadoc插件-如何只包含某些类?,java,maven-2,javadoc,maven-plugin,Java,Maven 2,Javadoc,Maven Plugin,使用Maven javadoc插件,您可以排除某些包——但是我有很多包,只有少数几个类需要生成javadoc 有没有办法包括而不是排除 我还想在类级别而不是包级别上做事情,因为包中有些类需要javadoc,有些不需要javadoc。据我所知,您只能在包级别进行筛选。但是,Javadoc仅为公共和受保护类型生成。如果类型是默认范围的或私有的,则不会为它们生成javadoc。将它们设为默认作用域意味着它们对包中的其他类型仍然可见。如果您不想要javadoc,您可能不希望人们使用这些类型,因此这可能是
我还想在类级别而不是包级别上做事情,因为包中有些类需要javadoc,有些不需要javadoc。据我所知,您只能在包级别进行筛选。但是,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
假设你有这些包裹
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>
com.foo.internal.*:com.foo.bob
您也可以将有问题的类型移动到单独的包中,但这不是这样做的好理由
为这些类型生成javadoc有什么问题?使用,您不能指定特定的java类(尽管可以使用javadoc实用程序,请参见下文)。但是,通过javadoc:javadoc目标的配置选项,您可以配置特定的包。这方面的一个例子如下:
<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>
最后,我使用
sourcepath
configuration选项指定了两个包,其中包含我想要Javadoc的类,并为那些包中我不想要Javadoc默认访问的类提供了类。将show
configuration选项设置为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>
org.apache.maven.plugins
很简单,当您使用Maven2插件的配置标签时,例如:
<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>
由于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>
....
org.apache.maven.plugins
maven javadoc插件
2.9
....
Foo.java
java
${basedir}/src/main/java/path/to/foo和bar
....
....
。。。这将构建一个只包含上述类的Javadoc站点。虽然您可能会质疑只为特定类指定Javadoc的必要性,但可以将maven Javadoc插件配置为只为特定类生成Javadoc。请参阅下面我的答案。Rich--请随意删除您的+1。在给出示例配置时,我意识到maven javadoc插件并不支持javadoc实用程序的所有功能。所以,我跳了枪。我确实添加了一个关于如何配置插件以只包含特定包的示例,我相信这是对您关于排除特定包的回答的一个很好的补充+1也给你。一个示例将添加到此答案。示例将根据你的请求添加。在写这个例子时,我意识到我原来的答案是不正确的。后来我修改了它。请随意将一个bug记录到maven javadoc插件中,请求增强以支持特定类的javadoc生成,因为javadoc实用程序支持它。可以使用element将maven javadoc插件配置为仅包含特定文件。Maven2命令是:mvn-cpu-up-am-pl子项目clean javadoc:aggregate
,感谢您添加了这个命令,尽管它已经得到了回答。如果没有这个后续的答案,可能不会找到它。相关:请注意下面RCross的答案。这正是OP所要求的修复,尽管添加的日期比接受的答案晚得多。是的,2012年9月,在接受的答案提交好几年后,maven javadoc插件添加了这一功能!