Процесс обнаружения процессора аннотаций начиная с Java 9 - PullRequest
0 голосов
/ 31 октября 2018

Я создаю приложение 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 проблемы:

  1. Javac не находит процессор аннотаций в modulepath
  2. Плагин компилятора Maven не имеет возможности задавать модульные процессоры аннотаций, кроме raw <compilerArgs>

Я что-то упустил?

...