如何从调用者检索以编程方式调用的Javadoc doclet的输出?

时间:2012-03-28 07:00:54

标签: java javadoc doclet

我正在编写一个工具,用于从预先存在的Java源文件中抓取Javadoc,并通过自定义doclet对其进行预处理(处理的细节不相关)。我已经编写了doclet,并且我能够通过Java documentation中指示的编程API从我的代码中调用doclet。

似乎这种机制是“只写”的,因为运行doclet的结果(如果有的话)不能通过第一类Java对象传回给execute()方法的调用者。相反,我不得不诉诸于一个kludge,例如将中间输出写入doclet中的文件,然后从我的调用者那里读回来。

所以我的问题是:有没有办法直接在调用者处检索由我的自定义doclet生成的字符串?例如:

public void foo() {
    // Invoke my custom doclet via Javadoc programmatically
    com.sun.tools.javadoc.Main.execute(new String[] {"-d", "docs", "- sourcepath", "/home/usr/src", "p1", "p2"});

    // Access the String output of my doclet here
    String processedJavadoc = getTheOutputOfMyDoclet();
}

提前致谢!

1 个答案:

答案 0 :(得分:0)

好的,所以我能想到的最优雅的方法是让doclet类使用一个静态成员变量,该变量设置为Javadoc工具调用时传入的RootDoc实例。 doclet的start()方法,然后允许通过getter访问此静态成员的调用者。这带来了使用静态成员的明显的线程安全问题,但它对我的目的起作用。

相关问题