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

时间:2009-07-13 16:13:43

标签: java ant javadoc

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

7 个答案:

答案 0 :(得分:16)

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

有一个plan to add an @exclude tag in the future

  

@exclude - 要从中排除API   由Javadoc产生。程序员   会标记一个类,界面,   构造函数,方法或字段   @排除。标签的存在会导致   要从生成的API中排除的API   文档。标签后面的文字   可以解释排除的原因,   但是Javadoc会忽略它。   (以前提议为@hide,但是   术语“隐藏”更适合   运行时动态显示/隐藏   能力。)有关更多讨论,请参阅:   开发人员Feature Request #4058216   连接。

答案 1 :(得分:8)

查看相关的Javadoc FAQ entry

  

目前没有Javadoc选项   隐藏,排除或压制公众   来自javadoc生成的成员   文档。

这似乎在 vanilla Javadoc中无法实现,但提供了一些解决方法。

答案 2 :(得分:8)

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

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

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

答案 3 :(得分:2)

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

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

答案 4 :(得分:2)

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

我一直在尝试它,似乎就是这个伎俩。

答案 5 :(得分:2)

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

答案 6 :(得分:0)

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