SpringBoot項目 - Maven Build Lombok 報錯

先拋結論

被Lombok @Builder 和 @UtilityClass 修飾的類成員變量不能通過 import static 方式引入。


今天遇到了一個很詭異的問題,一個SpringBoot項目,突然在某次提交之後Maven編譯就開始報錯了。報錯信息通篇是找不到那些標記了@Data的類所自動生成的 Getter方法和Setter方法,還夾雜着一些莫名其妙的無法在靜態類中引用靜態方法(源碼絕對是正常的,不存在此類引用)

翻遍了百度之後,嘗試了各種方式無果,包括:

  1. 提升Maven-compiler-plugin版本
  2. 提升Lombok版本
  3. 增加Maven-compiler-plugin的annotationProcessorPaths配置
  4. 其他江湖偏方

最終無奈,找到了Google,沒想到這個問題在外網也是各熱門問題,不得不說StackOverflow真的是牛逼,

在這裏插入圖片描述
StackOverflow上問題的鏈接:
https://stackoverflow.com/questions/34358689/maven-build-cannot-find-symbol-when-accessing-project-lombok-annotated-methods
也感謝這位老哥,一下子點醒了我。然後順藤摸瓜找到了以下內容

https://github.com/rzwitserloot/lombok/issues/2044

https://github.com/rzwitserloot/lombok/wiki/LOMBOK-CONCEPT:-Resolution
https://github.com/rzwitserloot/lombok/issues/979

第一個是我認爲講的最清楚的一個。

大概意思就是 @Builder@UtilityClass類的成員不能通過import static方法引入,舉的例子是比如a.b.c.d(),無法區分出這是a.b包c類的d方法,還是a包b類c屬性的d方法,說實話我個人每臺理解這和不能import static有什麼衝突。今天有點晚了,先記錄下問題,之後再仔細思考吧。

回到問題,發現項目中的確存在 import static 了 一個@UtilityClass的一個成員,修改代碼之後,問題解決,成功編譯。

對於這個問題,我還是贊同github其中一個人的觀點,Lombok既然官方已經知道這件事,好歹可以在相關注解的javadoc裏提示一下吧。。但是官方對此一直無動於衷,真的讓人有些懊惱。。

重複一遍結論:

被Lombok 的 @UtilityClass 或 @Builder 標記的類中的成員,不能通過 import static方式引入。

以上。

祝大家工作順利

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章