自定义java Doclet的调试

         工作中经常需要对外提供接口,这个时候接口的文档就非常麻烦,同时是维护在wiki或者其他地方,但是修改代码之后很可能没有及时更新wiki,造成很多交流的成本。所以想直接通过javadoc 生成接口文档的方式。发现maven提供的javadoc插件,但是原生的Doclet不能满足我的要求。所以需要自己定义doclet。来看下Doclet的定义:

Doclet 是用 JavaTM编程语言编写的程序,它用 doclet API 指定 Javadoc 工具的输出内容和格式。缺省情况下,Javadoc 工具用 SunTM 提供的“标准” doclet 来生成 HTML 形式的 API 文档。然而,用户也可用自己的 doclet 根据个人喜好自定义 Javadoc 输出。用户可以利用 doclet API从头开始编写 doclet,也可以对标准 doclet 进行修改,以适合自己的需要。
下面是创建和使用自己的 doclet 的基本步骤:

1. 编写用来构成 doclet 的 Java 程序。为使用 doclet API,该程序应导入 com.sun.javadoc.*。程序的入口点是一个带有 public static boolean start 方法的类,它将 RootDoc 作为参数。
2. 编译 doclet。可以使用 Java Development Kit 的编译器 javac 来编译它。
3. 用 -doclet <YourDoclet> 选项运行 javadoc 工具,生成 doclet 指定的输出。

doclet API 类文件在 JDK 软件的 lib/tools.jar 文件中。当编译 doclet 和使用自定义 doclet 时,tools.jar 必须在类路径上。为此,可以对 javac 和 javadoc 使用 -classpath 选项。 

      这里说到了doclet需要使用tools.jar,在使用ide比如idea时在project setting中对jdk的classpath加上tools.jar的路径就可以了。但是这货调试太麻烦了,根据网上的资料只能在外面先编译好你的Doclet ,然后用javadoc -doclet 指定编译好的doclet。但是这样不能debug doclet程序,重新找了下网上的资料加上自己的时间,发现可以这样搞

public class APIDoclet {


    public static boolean start(RootDoc root) {
        ClassDoc[] classes = root.classes();
        for (int i = 0; i < classes.length; ++i) {
            System.out.println(classes[i]);
        }
        return true;
    }


    public static void main(String[] args) {
        String[] docArgs = new String[]{"-doclet", APIDoclet.class.getName(), System.getProperty("user.dir") + "/src/main/java/" + "com/hz/yk/concurrent/aqs/BooleanMutex.java"};
        com.sun.tools.javadoc.Main.execute(docArgs);
    }

}

哈哈哈,这下可以打断点了

附上doclet 的资料:

http://dadi520.iteye.com/blog/545897

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值