Я создаю приложение Java 11 с Maven.
У меня есть модульный процессор аннотаций в качестве зависимости, и я хочу, чтобы он был обнаружен и запущен javac, но я не могу заставить его работать должным образом. (Или, может быть, мои ожидания неверны?)
У меня есть provides Processor with ...
в моем module-info
файле, и у меня нет файлов в META-INF/services
в процессорном фляге, это новый способ ServiceLoader
, верно? Этот jar-файл процессора передается javac в свойстве --module-path
, но процессоры не выполнялись.
Я попытался указать эту зависимость в <annotationProcessorPaths>
для плагина компилятора, но он использует свойство -processorpath
, что по-старому! Эта зависимость не имеет META-INF/services
, поэтому процессоры не были обнаружены и запущены.
Когда я вручную указал это в <compilerArgs>
:
--processor-module-path=${settings.localRepository}/<path_to_my_jar>
... тогда процессор был найден и запущен!
Итак, у javac есть «процесс обнаружения процессора аннотаций по умолчанию», и вот старый ответ об этом: Что такое процесс обнаружения процессоров аннотации по умолчанию?
Но этот процесс обнаружения не работает для меня с Java 9.
Несмотря на то, что мой процессор находится в модульном пути, процессоры не будут найдены, пока я не укажу вручную процессор с помощью --processor-module-path
.
Итак, есть 2 проблемы:
- Javac не находит процессор аннотаций в modulepath
- Плагин компилятора Maven не имеет возможности задавать модульные процессоры аннотаций, кроме raw
<compilerArgs>
Я что-то упустил?