私はドックレットを使っていくつかの実験を行っています。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>
私のドックレットは次のとおりです。
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);
}
}
ドックレットで処理しようとしているクラスは
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>
そして変わらない…