有没有办法为公共方法的子集生成Javadoc?例如,通过将公共方法注释为“不是公共API的一部分”

时间:2013-04-04 13:16:11

标签: java api javadoc doclet

我知道如何为类/接口/包的子集生成Javadoc。但有没有办法只为一部分公共方法生成Javadoc?

我更喜欢的是能够将方法(Javadoc标记或注释)标记为属于某个API或不属于它。然后有一个工具只为指定的方法集生成Javadoc - 形成API的方法。

对于我的项目,对方法的公共/私有/包访问之间的选择是不够的。公共方法可能属于公共API,也可能属于API 1,但不属于API 2.本质上,我希望能够从公共方法的任意子集中选择API。

2 个答案:

答案 0 :(得分:2)

如果您使用的是javadoc命令行工具,则可以通过将公共方法标记为Deprecated并使用-nodeprecated选项来排除公共方法。但是如果你想要更复杂的东西,你必须自己实现它。

关于如何做到这一点的粗略想法:

  1. 创建自定义注释@ API1,@ API2等
  2. 使用这些注释对您的方法进行分类(即标记它们)
  3. 编写一个自定义Ant任务,该任务读取一个配置参数(例如,来自文件),该参数告诉您要为哪个API生成Javadoc。
  4. 仍然在Ant任务中,循环注释注释的方法并使用Deprecated注释替换所有不是所选API的API注释。这将把它们从Javadoc中排除。
  5. 恕我直言,这是一个很麻烦的事情。就像他们在评论中所说的,如果你有一个具有多个接口的类(对于不同的用户配置文件,我猜?),考虑编写单独的接口。

答案 1 :(得分:2)

如果您不依赖于javadoc,您可以使用doxygen尝试conditional sections

public class SomeClass {
    /// @cond API1
    /**
     * This method can be called as part of API1 only.
     */
    public void method() { ... }
    /// @endcond

    /// @cond (API1 || API2)
    /**
     * This method can be called as part of API1 or API2.
     */
    public void method2() { ... }
    /// @endcond
}

在对方法进行适当分组时,您还可以限制所需的@cond语句数。

创建文档时,ENABLED_SECTIONS配置选项可以选择实际包含的方法。