У меня есть шаг после компиляции, который манипулирует байт-кодом Java сгенерированных классов. Я хотел бы сделать жизнь потребителей библиотек максимально безболезненной, поэтому я ищу способы сделать этот процесс автоматическим и (если возможно) независимым от компилятора.
API обработки аннотаций предоставляет множество требуемых функций (автоматическое обнаружение служб; поддерживается Eclipse). К сожалению, это нацелено на генераторы кода и не поддерживает манипулирование существующими артефактами :
Исходными данными для инструмента являются
считается созданным нулем
круглый; поэтому, пытаясь создать
исходный файл или файл класса, соответствующий
к одному из этих входов приведет
FilerException.
Шаблон Decorator, рекомендованный API, не подходит.
Я могу видеть, как выполнить этот шаг с агентом / инструментарием времени выполнения, но это худший вариант, чем шаг ручной сборки, так как для этого потребуется, чтобы кто-то даже не касался API периферийного устройства для настройки своих JVM неочевидным образом .
Есть ли способ подключить или обернуть инструмент компилятора , который вызывается javac ? Кто-нибудь успешно подрывал процессоры аннотаций для манипулирования байт-кодом, независимо от того, что говорит документ?