什么是doclet
doclet可以代替javadoc的输出,借由javadoc可以获取源码几乎所有的信息,类名、类变量、类方法、方法参数、注解、javadoc注释等都可以获取到,然后根据自己的需要把关心的信息输出成自定的格式。
一个简单的doclet类
一个简单的doclet类只需要实现 public static boolean start(RootDoc root) 方法,就可以被javadoc所使用。
package com.hc.ExampleDoclet;
import com.sun.javadoc.*;
public class ExampleDoclet extends Doclet {
public static boolean start(RootDoc root) {
ClassDoc[] classes = root.classes();
for (ClassDoc cls : classes) {
System.out.println(cls);
MethodDoc[] methods = cls.methods();
for (MethodDoc meth : methods) {
System.out.println(meth);
}
}
return true;
}
}
编译之前需要添加tools.jar库到项目中:
tools.jar在jdk下可以找到,如:
D:\Program Files\Java\jdk1.8.0_66\lib\tools.jar。
在eclipse中添加方法如下:
Project -> Properties -> Java Build Path -> Libraries -> Add External Jars
选中tools.jar即可。
执行命令:
>javadoc -doclet com.hc.ExampleDoclet.ExampleDoclet -docletpath bin/ .\src\com\hc\ExampleDoclet\ExampleDoclet.java
输出结果:
正在加载源文件.\src\com\hc\ExampleDoclet\ExampleDoclet.java...
正在构造 Javadoc 信息...
com.hc.ExampleDoclet.ExampleDoclet
com.hc.ExampleDoclet.ExampleDoclet.start(com.sun.javadoc.RootDoc)
如果出现以下信息,只需要把tools.jar添加到CLASSPATH路径即可,tools.jar一般在jdk目录的lib下,也可以在javadoc中指定classpath:
>javadoc -classpath "%JAVA_HOME%/../lib/tools.jar" -doclet com.hc.ExampleDoclet.ExampleDoclet -docletpath bin/ .\src\com\hc\ExampleDoclet\ExampleDoclet.java
向Doclet内传入选项
要接受函数需要实现optionLength方法,控制选项跟随的参数个数。
package com.hc.ExampleDoclet;
import java.util.HashMap;
import java.util.Map;
import com.sun.javadoc.*;
public class ExampleDoclet extends Doclet {
public static boolean start(RootDoc root) {
String[][] opt