如果您可以通过包将 public public 与 internal public 类分开(即,有一些包包含图书馆用户所需的所有公共类,并且没有其他公共类),然后只需在这些包上运行 Javadoc。
Javadoc 的工作原理是提供要使用的包列表(以及查找这些包的源路径),并仅为这些包生成文档。
使用 Ant 会稍微复杂一些,因为使用javadoc 任务的最简单方法是使用<packageset>,默认情况下会占用给定目录中的所有包。
这里是一个只有一个包的例子:
<target name="javadoc">
<javadoc destdir="${javadoc}"
encoding="US-ASCII"
charset="UTF-8"
docencoding="UTF-8"
use="yes"
windowtitle="JSch API"
sourcepath="${src}"
>
<arg value="-notimestamp" />
<package name="com.jcraft.jsch" />
<doctitle>JSch – Java Secure Channel ${version}</doctitle>
<bottom>This is an inofficial Javadoc created by Paŭlo Ebermann.
Have a look at the <a href="http://www.jcraft.com/jsch/">official homepage</a>.
</bottom>
<link href="http://download.oracle.com/javase/6/docs/api/" />
</javadoc>
</target>
你可以view the result,但实际上这不是一个很好的例子,因为这里的主包包含许多不供消费者使用的类。
如果您处于类似 JSch 的情况,即您无法通过包将 public public 与 internal public 类分开,因为您的包同时包含 public 和私有类型,仍然有办法做到这一点。 Javadoc 还支持不提供包名,而是提供单个文件名作为参数。由于我刚刚花了一些时间来弄清楚如何使用 ant 执行此操作,因此这里生成的 ant 目标代码:
<target name="simple.javadoc">
<javadoc destdir="${simple.javadoc}"
encoding="US-ASCII"
charset="UTF-8"
docencoding="UTF-8"
use="yes"
windowtitle="simple JSch API"
excludepackagenames="*"
sourcepath="${src}"
>
<arg value="-notimestamp" />
<sourcefiles>
<resourcelist encoding="US-ASCII">
<file file="simpleclasses.list" />
</resourcelist>
</sourcefiles>
<doctitle>JSch – Java Secure Channel ${version} (simplified version)</doctitle>
<bottom>This is a simplified version of the <a href="http://epaul.github.com/jsch-documentation/javadoc/">inofficial Javadoc</a> created by Paŭlo Ebermann.
Have a look at the <a href="http://www.jcraft.com/jsch/">official homepage</a>.
</bottom>
<link href="http://download.oracle.com/javase/6/docs/api/" />
</javadoc>
</target>
源文件在simpleclasses.list 中列出,使用resourcelist。我认为带有includesfile=... 的简单文件集也可以工作(而且它也允许使用模式而不是简单列表)。
我不得不搜索很久的重点:如果你给了一个sourcepath属性并且没有给任何packagenames属性或<package>子元素,ant会自动提供一个“所有包”默认值,此外到提到的文件,这导致不排除任何东西。 (我们希望这里的sourcepath 允许从未记录的类继承文档。)因此,我们还必须提供excludepackagenames="*",这样现在只有<sourcefiles> 元素定义了要记录的内容。
The result looks now much nicer,感谢您的提问。