Процесс обнаружения процессора аннотаций начиная с java 9

Я создаю приложение 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 не находит обработчик аннотаций в пути к модулю
  2. Плагин компилятора Maven не имеет никакого способа указать модульные процессоры аннотаций, кроме необработанного <compilerArgs>.

Я что-то упускаю?

--processor-module-path - правильный вариант, вы не должны ожидать, что javac найдет обработчики аннотаций на пути модуля, указанном для javac с помощью --module-path.

Alan Bateman 31.10.2018 14:16

@AlanBateman Могу я спросить, почему такое несоответствие? Если --processor-path не указан, то javac найдет обработчики аннотаций на --class-path, почему он отличается для --processor-module-path и --module-path?

Slaw 31.10.2018 18:10
2
2
621
0

Другие вопросы по теме