Подключение к компиляторам Java

У меня есть шаг после компиляции, который манипулирует байт-кодом Java сгенерированных классов. Я хотел бы сделать жизнь потребителей библиотек максимально безболезненной, поэтому я ищу способы сделать этот процесс автоматическим и (если возможно) независимым от компилятора.

API обработки аннотаций предоставляет множество требуемых функций (автоматическое обнаружение служб; поддерживается Eclipse). К сожалению, это нацелено на генераторы кода ине поддерживает манипулирование существующими артефактами:

Первоначальные входные данные для инструмента считаются созданными нулевым раундом; поэтому попытка создать файл источника или класса, соответствующий одному из этих входных данных, приведет к исключению FilerException.

Шаблон Decorator, рекомендованный API, не подходит.

Я могу понять, как выполнить этот шаг с агентом / инструментарием времени выполнения, но это худший вариант, чем шаг ручной сборки, так как для этого потребуется, чтобы кто-то даже коснулся API, чтобы настроить свои JVM неочевидным образом.

Есть ли способ подключить или обернутьинструмент компилятора как вызваноJavac? Кто-нибудь успешно подрывал процессоры аннотаций для манипулирования байт-кодом, независимо от того, что говорит документ?

Ответы на вопрос(2)

Ваш ответ на вопрос