Ich habe einen Post-Compilierungsschritt, der den Java-Bytecode der generierten Klassen manipuliert. Ich möchte den Bibliothekskonsumenten das Leben so schmerzlos wie möglich machen, deshalb suche ich nach Wegen, wie ich diesen Prozess automatisch und (wenn möglich) ohne Agnostiker machen kann.Einstecken in Java-Compiler
Die Annotation Processing API bietet viele der gewünschten Funktionen (automatische Erkennung von Diensten; von Eclipse unterstützt). Leider ist dies bei Code-Generatoren und doesn't support manipulation of existing artefacts Ziel:
Die ersten Eingänge mit dem Werkzeug betrachtet von der nullten Runde geschaffen werden; Wenn Sie daher versuchen, eine Quell- oder Klassendatei zu erstellen, die einem dieser Eingaben entspricht, wird eine FilerException ergeben.
Das von der API empfohlene Decorator-Muster ist keine Option.
Ich kann sehen, wie man den Schritt mit einem Laufzeitagenten/Instrumentierung durchführt, aber das ist eine schlechtere Option als ein manueller Build-Schritt, da jeder peripher von der API berührte, ihre JVMs in einem nicht offensichtlichen zu konfigurieren Weise.
Gibt es eine Möglichkeit, den compiler tool, wie er von javac aufgerufen wird, anzuschließen oder zu wickeln? Hat jemand die Annotation-Prozessoren erfolgreich manipuliert, um Bytecode zu manipulieren, egal was das Dokument sagt?
Ihr Link ist tot. –