簡體   English   中英

為什么IntelliJ需要Lombok插件?

[英]Why IntelliJ needs Lombok plugin?

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

使用Maven 3.5,它可以在不添加任何其他配置的情況下完美運行,只需將@Getter添加到Lombok並添加一些注釋,如@Getter@Setter

但是,如果我在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團隊實現,或者就像在這種情況下的插件一樣。

注釋處理選項僅適用於通過javac完成的構建項目,但不適用於語法突出顯示。

Ale IDE使用intelij-idea插件,無論是intelij-idea還是eclipse javac可以正常工作 - 但請記住,例如,當您使用mvn clean package構建項目時,它可以正常工作。 然后當你有你的IDE - 它的工作方式不同 - 代碼不像在構建任務中那樣處理。

該插件讓IDE知道這個注釋是什么,以及它在不需要javac情況下生成什么代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM