据我所知,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呢
IntelliJ的代码分析引擎不使用javac或运行注释处理器。相反,IntelliJ使用自己的Java解析器和参考解析逻辑,并构建自己的代码模型。 Lombok插件扩展了代码模型,以提供有关Lombok注释处理器生成的声明的信息。
这是因为IDEA语法高亮显示器使用内部Java解析器。如果IDEA只使用javac,那么在键入时它将无法突出显示语法错误。它还提供了更好的关于错误代码的提示,因此每个Java构造,功能或注释必须由JetBrains团队实现,或者就像在这种情况下的插件一样。
注释处理选项仅适用于通过@Getter
完成的构建项目,但它不适用于语法突出显示。
Ale IDE使用lombok插件,无论是@Setter
还是javac
。 intelij-idea
可以很好地工作 - 但请记住,例如,当你使用eclipse
构建项目时,它会起作用。然后当你有你的IDE - 它的工作方式不同 - 代码不像在构建任务中那样处理。
该插件让IDE知道这个注释是什么,以及它在不需要javac
的情况下生成什么代码。