为什么IntelliJ需要Lombok插件?

问题描述 投票:4回答:3

据我所知,Lombok使用Java的Annotation Processors来生成其他方法。

使用Maven 3.5,它可以完美地工作,无需添加任何其他配置,只需添加依赖项到Lombok并添加一些注释,如qazxsw poi,qazxsw poi。

但是,如果我在IntelliJ IDEA 2018.2中打开此项目,则生成的getter / setter的所有用法都会突出显示为错误。我打开了Annotation Processing,我尝试在IntelliJ中构建项目或在Maven中构建然后在IntelliJ中使用,但它仍然需要Lombok插件来避免错误。

这是某种虫子吗?工作流程出错?或者也许龙目岛不仅使用注释处理器,还有其他一些我不知道的东西,这就是为什么IntelliJ + javac无法弄清楚如何处理它?这很奇怪,因为javac本身编译这些文件没有错误

我知道有很多问题“我在使用Lombok时遇到错误”和“使用插件”之类的答案。我不是在问我是否应该使用插件,但为什么我应该使用它,为什么IntelliJ无法在没有插件的情况下处理它而javac呢

java intellij-idea lombok annotation-processing intellij-lombok-plugin
3个回答
11
投票

IntelliJ的代码分析引擎不使用javac或运行注释处理器。相反,IntelliJ使用自己的Java解析器和参考解析逻辑,并构建自己的代码模型。 Lombok插件扩展了代码模型,以提供有关Lombok注释处理器生成的声明的信息。


2
投票

这是因为IDEA语法高亮显示器使用内部Java解析器。如果IDEA只使用javac,那么在键入时它将无法突出显示语法错误。它还提供了更好的关于错误代码的提示,因此每个Java构造,功能或注释必须由JetBrains团队实现,或者就像在这种情况下的插件一样。

注释处理选项仅适用于通过@Getter完成的构建项目,但它不适用于语法突出显示。


1
投票

Ale IDE使用lombok插件,无论是@Setter还是javacintelij-idea可以很好地工作 - 但请记住,例如,当你使用eclipse构建项目时,它会起作用。然后当你有你的IDE - 它的工作方式不同 - 代码不像在构建任务中那样处理。

该插件让IDE知道这个注释是什么,以及它在不需要javac的情况下生成什么代码。

© www.soinside.com 2019 - 2024. All rights reserved.