为什么IntelliJ需要Lombok插件?

时间:2018-08-30 09:03:44

标签: java intellij-idea lombok annotation-processing intellij-lombok-plugin

据我了解,Lombok使用Java的注释处理器来生成其他方法。

使用Maven 3.5,它可以完美地工作,而无需添加任何其他配置,只需向Lombok添加dependecy并放置一些注释,例如@Getter@Setter

但是,如果我在IntelliJ IDEA 2018.2中打开此项目,则生成的吸气剂/设置器的所有用法都会突出显示为错误。我打开了注释处理功能,我试图在IntelliJ中构建项目或在Maven中构建,然后在IntelliJ中使用,但是仍然需要Lombok插件来避免错误。

是某种错误吗?工作流程错误?也许Lombok不仅在使用注释处理器,而且在使用其他我不知道的东西,这就是为什么IntelliJ + javac无法弄清楚如何处理它的原因? javac本身会毫无错误地编译这些文件,这会很奇怪

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

3 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:2)

这是因为IDEA语法荧光笔使用内部Java解析器。如果IDEA仅使用javac,则在键入时将无法突出显示语法错误。它还提供了有关错误代码的更好提示,因此,每个Java构造,功能或注释都必须由JetBrains团队来实现,或者在这种情况下必须有相应的插件。

注释处理选项仅用于通过PendingIntent pendingIntent = PendingIntent.GetBroadcast(this, 0, myIntent, 0); 完成的项目构建,但不适用于语法突出显示。

答案 2 :(得分:1)

Ale IDE使用lombok插件,无论是intelij-idea还是eclipsejavac可以很好地工作-但是请记住,例如,当您使用mvn clean package构建项目时,它就可以工作。 然后,当您拥有IDE时-它的工作方式有所不同-代码不会像构建任务中那样处理。

该插件使IDE知道此注释是什么,并且不需要javac就能生成什么代码。