如何从javadoc Ant任务的结果中排除特定的方法/构造函数?

我正在使用javadoc Ant任务生成的javadoc来记录Web服务,我想从输出中排除一些构造函数。 我怎么做?

公共方法无法做到这一点。 标准实践(即使在相当多的JDK类中)是指示方法或构造函数不适合公共使用。

计划在将来添加@exclude标记 :

@exclude – 用于从Javadoc生成中排除的API。 程序员用@exclude标记类,接口,构造函数,方法或字段。 标记的存在将导致API从生成的文档中排除。 标记后面的文字可以解释排除的原因,但Javadoc会忽略它。 (以前建议使用@hide,但术语“隐藏”更适合于运行时动态显示/隐藏function。)有关更多讨论,请参阅:Developer Connection中的function请求#4058216 。

不是从文档中排除某些公开内容只是对“通过默默无闻的安全性”(或者更确切地说,“通过默默无闻的文档”)的变体进行排除? 如果构造函数是代码API的一部分,那么它们可供他们使用。 如果他们发现并使用它,那是他们的错(因为你首先将它公之于众)?

如果你可以改变构造函数的可见性或完全删除它,我会去那。 如果您无法从API中删除它,请在Javadoc中为构造函数告知它不打算通过Web服务使用它。 这样,您就与API的用户建立了合同,通知他们不要使用它。

最好记录它不应该被使用而不是根本不记录它(如果它是公开的)。 不记录它会增加无意中使用它的风险,然后在更改实现时使用它的客户端代码会中断。

请参阅相关的Javadoc FAQ条目 。

目前没有Javadoc选项可以从javadoc生成的文档中隐藏,排除或禁止公共成员。

看起来这在香草 Javadoc中是不可能的,但提供了一些解决方法。

更改方法的方法访问级别,然后使用javadoc任务的访问级别过滤属性, privatepackage等。只有在代码中有意义时才这样做,但是,例如,访问级别不正确的方法。

例如,对于构造函数,您可以降低对package的访问级别,然后在同一个包中创建一个工厂类,该类在包外提供构造访问。 可以从javadocs轻松过滤工厂类。 有点hacky,但它确实有效。

试试Chris Nokleberg的ExcludeDoclet: http : //www.sixlegs.com/blog/java/exclude-javadoc-tag.html

我一直在试验它,它似乎做了伎俩。

目前最简单的解决方案是使用@deprecated启动javadoc注释,然后将-nodeprecated传递给javadoc命令。 当然,如果您有实际已弃用的项目,但仍希望包含在文档中,则可能无法接受。

我得到的关闭是使用Doclava ,它具有您可以在方法文档中指定的@hide标记。