Pytanie Jak mogę debugować Doclet w Eclipse?


Tworzę niestandardowy doclet, który chcę uruchomić w mojej kompilacji Mavena za pomocą wtyczki Javadoc, ale teraz chciałbym przetestować / debugować Doclet w Eclipse. Jak mogę to zrobić?

Czy muszę programowo programować javadoc? I jak?


16
2018-05-06 08:57


pochodzenie


Sean, dobre pytanie: stoję przed tym samym wyzwaniem debugowania docletów; chociaż wiadomość od grupy deweloperów Eclipse wskazuje na dość brzydką metodę, zajęło mi to chyba 30 minut, ale działa. Jeśli ktoś znajdzie łatwiejszy sposób, napisz :-). W każdym razie, +1 Sean na pytanie i link. - acostache
link w pytaniu jest zepsuty - Omnipresent
prawda, usunął to. To i tak było okropne - Sean Patrick Floyd


Odpowiedzi:


możesz po prostu utworzyć główną metodę w swoim dokumencie i wywołać (przykład, zobacz pełne odwołanie do cmdling):

public class MyDoclet extends Doclet {

    public static void main(String[] args) {
        com.sun.tools.javadoc.Main.execute("-doclet " + MyDoclet.class.getName());
    }
}

To również działa z debuggerem.

Może być również konieczne dodanie parametru -classpath zawierającego wszystkie zależności słoika potrzebne do przeanalizowania rzeczywistego kodu.


13
2017-09-30 08:43





Dostałem komunikat o błędzie z odpowiedzią @Jan

Error:(13, 35) java: reference to execute is ambiguous
  both method execute(java.lang.String...) in com.sun.tools.javadoc.Main and method execute(java.lang.String,java.lang.String...) in com.sun.tools.javadoc.Main match

Po zmianie na ten kod i działa dobrze

com.sun.tools.javadoc.Main.execute(new String[]{
                "-doclet", CustomDoclet.class.getName(),
                "path/to/src/XXX.java"
        });

0
2018-02-02 04:28





Jeśli używasz JDK v1.8, możesz potrzebować użyć następującego fragmentu kodu:

Main.execute(docletFqcn.getClass().getClassLoader(), "-doclet", docletFqcn, javaSourceFilePath);

gdzie docletFqcn to w pełni kwalifikowana nazwa klasy Doclet i javaSourceFilePath lokalizacja pliku Java do przetworzenia.


0
2017-08-20 16:45