我正在用 Doclets 做一些实验。我正在使用 Java 7 和 Maven。
我的 pom.xml 是:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>betlista</groupId>
<artifactId>tests-javadoc</artifactId>
<version>1.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>sun.jdk</groupId>
<artifactId>tools</artifactId>
<version>1.5.0</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
</dependencies>
</project>
我的 doclet 是:
package betlista.tests.javadoc;
import com.sun.javadoc.ClassDoc;
import com.sun.javadoc.MethodDoc;
import com.sun.javadoc.RootDoc;
public class MyDoclet {
public static boolean start(RootDoc root) {
ClassDoc[] classes = root.classes();
for (ClassDoc classDoc : classes) {
processClass(classDoc);
}
return true;
}
private static void processClass(ClassDoc classDoc) {
MethodDoc[] methods = classDoc.methods();
for (MethodDoc methodDoc : methods) {
processMethod(methodDoc);
}
}
private static void processMethod(MethodDoc methodDoc) {
System.out.println(methodDoc);
}
public static void main(String[] args) {
String[] params = new String[] {
"-private",
//"-docletpath", "c:\\betlista\\CAMS\\SVN\\cams\\trunk\\CamsSwaggerGenerator\\target\\classes",
"-doclet", "betlista.tests.javadoc.MyDoclet",
"-sourcepath", "C:\\betlista\\other\\sts_3.6.1_e4.4_ws\\tests-javadoc\\src\\main\\java",
"betlista.tests.javadoc"
};
com.sun.tools.javadoc.Main.execute(params);
}
}
我正在尝试使用 doclet 处理的课程是
package betlista.tests.javadoc;
/**
* My perfect class
*
* @author me
*/
public class ClassToProcess {
/**
* My cool method.
*/
private void foo() {
}
}
据我了解“我的酷方法”。应该是第一句话,但在调试中有一个null
值,当我在 MyDoclet 中有断点时processMethod()
:
我错过了一些想法?
注意:我刚试过
<version>1.7.0</version>
并且没有变化...