Зачем IntelliJ нужен плагин Lombok?
Насколько я понимаю, Lombok использует процессоры аннотаций Java для генерации дополнительных методов.
С Maven 3.5 он отлично работает без добавления каких-либо дополнительных настроек, просто добавьте зависимости в Lombok и добавьте некоторые аннотации, такие как @Getter
, @Setter
,
Однако, если я открою этот проект в IntelliJ IDEA 2018.2, все случаи использования сгенерированных методов получения / установки будут выделены как ошибки. У меня включена обработка аннотаций, я пытался построить проект в IntelliJ или встроить в Maven, а затем использовать в IntelliJ, но для этого по-прежнему требуется плагин Lombok, чтобы избежать ложных ошибок.
Это какая-то ошибка? Ошибка в рабочем процессе? Или, может быть, Lombok использует не только процессоры аннотаций, но и некоторые другие вещи, которые я не знал, и поэтому IntelliJ + javac не может понять, как с этим справиться? Было бы странно, поскольку сам javac компилирует эти файлы без ошибок.
Я знаю, что есть много вопросов "У меня есть ошибки при использовании Lombok" и ответы типа "использовать плагин". Я не спрашиваю, должен ли я использовать плагин, но почему я должен его использовать, почему IntelliJ не может справиться с этим без плагина, в то время как javac делает
3 ответа
Механизм анализа кода IntelliJ не использует javac и не запускает процессоры аннотаций. Вместо этого IntelliJ использует собственный синтаксический анализатор Java и логику разрешения ссылок и создает собственную модель кода. Плагин Lombok расширяет модель кода, предоставляя информацию о объявлениях, генерируемых процессором аннотаций Lombok.
Это потому, что подсветка синтаксиса IDEA использует внутренний анализатор Java. Если бы IDEA использовал только javac, он не смог бы выделять синтаксические ошибки при вводе. Это также дает намного лучшие подсказки о неправильном коде, поэтому каждая конструкция, функция или аннотация Java должна быть реализована командой JetBrains или есть плагин для этого, как в этом случае.
Опция обработки аннотации только для строительного проекта, который выполняется через javac
, но это не для подсветки синтаксиса.
Ale IDE используют плагин lombok intelij-idea
или же eclipse
,javac
отлично работает с ним - но помните, что он работает, когда, например, вы строите свой проект с mvn clean package
, Затем, когда у вас есть IDE - он работает иначе - код не обрабатывается, как в задаче сборки.
Плагин сообщает IDE, что это за аннотация и какой код он генерирует под капотом без необходимости javac
,