SpringBoot项目 - Maven Build Lombok 报错
Posted 在咖啡里溺水的鱼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot项目 - Maven Build Lombok 报错相关的知识,希望对你有一定的参考价值。
先抛结论
被Lombok @Builder 和 @UtilityClass 修饰的类成员变量不能通过 import static 方式引入。
今天遇到了一个很诡异的问题,一个SpringBoot项目,突然在某次提交之后Maven编译就开始报错了。报错信息通篇是找不到那些标记了@Data的类所自动生成的 Getter方法和Setter方法,还夹杂着一些莫名其妙的无法在静态类中引用静态方法(源码绝对是正常的,不存在此类引用)
翻遍了百度之后,尝试了各种方式无果,包括:
- 提升Maven-compiler-plugin版本
- 提升Lombok版本
- 增加Maven-compiler-plugin的annotationProcessorPaths配置
- 其他江湖偏方
最终无奈,找到了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方式引入。
以上。
祝大家工作顺利
以上是关于SpringBoot项目 - Maven Build Lombok 报错的主要内容,如果未能解决你的问题,请参考以下文章
eclipse运行maven项目报错java.lang.ClassNotFoundException: xxxxxx