自訂java Doclet的調試

來源:互聯網
上載者:User

         工作中經常需要對外提供介面,這個時候介面的文檔就非常麻煩,同時是維護在wiki或者其他地方,但是修改代碼之後很可能沒有及時更新wiki,造成很多交流的成本。所以想直接通過javadoc 產生介面文檔的方式。發現maven提供的javadoc外掛程式,但是原生的Doclet不能滿足我的要求。所以需要自己定義doclet。來看下Doclet的定義:

Doclet 是用 JavaTM程式設計語言編寫的程式,它用 doclet API 指定 Javadoc 工具的輸出內容和格式。預設情況下,Javadoc 工具用 SunTM 提供的“標準” doclet 來產生 HTML 形式的 API 文檔。然而,使用者也可用自己的 doclet 根據個人喜好自訂 Javadoc 輸出。使用者可以利用 doclet
API從頭開始編寫 doclet,也可以對標準 doclet 進行修改,以適合自己的需要。
下面是建立和使用自己的 doclet 的基本步驟:

1. 編寫用來構成 doclet 的 Java 程式。為使用 doclet API,該程式應匯入 com.sun.javadoc.*。程式的進入點是一個帶有 public static boolean start 方法的類,它將 RootDoc 作為參數。
2. 編譯 doclet。可以使用 Java Development Kit 的編譯器 javac 來編譯它。
3. 用 -doclet <YourDoclet> 選項運行 javadoc 工具,產生 doclet 指定的輸出。

doclet API 類檔案在 JDK 軟體的 lib/tools.jar 檔案中。當編譯 doclet 和使用自訂 doclet 時,tools.jar 必須在類路徑上。為此,可以對 javac 和 javadoc 使用 -classpath 選項。 

      這裡說到了doclet需要使用tools.jar,在使用ide比如idea時在project setting中對jdk的classpath加上tools.jar的路徑就可以了。但是這貨調試太麻煩了,根據網上的資料只能在外面先編譯好你的Doclet
,然後用javadoc -doclet 指定編譯好的doclet。但是這樣不能debug doclet程式,重新找了下網上的資料加上自己的時間,發現可以這樣搞

public class APIDoclet {    public static boolean start(RootDoc root) {        ClassDoc[] classes = root.classes();        for (int i = 0; i < classes.length; ++i) {            System.out.println(classes[i]);        }        return true;    }    public static void main(String[] args) {        String[] docArgs = new String[]{"-doclet", APIDoclet.class.getName(), System.getProperty("user.dir") + "/src/main/java/" + "com/hz/yk/concurrent/aqs/BooleanMutex.java"};        com.sun.tools.javadoc.Main.execute(docArgs);    }}

哈哈哈,這下可以打斷點了

附上doclet 的資料:

http://dadi520.iteye.com/blog/545897

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.