0

我正在用 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()

调试 doclet 时 Eclipse 中的变量视图

我错过了一些想法?

注意:我刚试过

<version>1.7.0</version>

并且没有变化...

4

1 回答 1

0

你错过了课程描述之后的重点。

于 2014-12-15T14:22:02.727 回答