我正在编写一个工具,用于从预先存在的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();
}
提前致谢!
答案 0 :(得分:0)
好的,所以我能想到的最优雅的方法是让doclet类使用一个静态成员变量,该变量设置为Javadoc工具调用时传入的RootDoc
实例。 doclet的start()
方法,然后允许通过getter访问此静态成员的调用者。这带来了使用静态成员的明显的线程安全问题,但它对我的目的起作用。