IntelliJ执行Gradle构建时仅构建阶段出现Lombok编译错误
IntelliJ执行Gradle Build时Lombok生成方法解析失败修复
问题特征
- IntelliJ编辑器内无编译报错,代码中可正常识别Lombok生成的getter/setter、builder相关方法
- 仅执行
gradle build命令/通过IDEA触发Gradle构建时,抛出找不到对应getter/setter方法的编译错误 - 本地已完成基础配置:开启IDEA注解处理、安装Lombok插件、目标类已添加
@Data、@Builder注解
修复步骤
- 补全Gradle侧Lombok注解处理器配置
注意:IDEA中开启的Annotation Processing仅对IDEA自带的编译器生效,Gradle构建走独立编译流程,不会读取IDEA的注解处理配置,必须在构建脚本中显式声明Lombok的注解处理器依赖
如果使用Groovy DSL(build.gradle),添加以下配置,注意Lombok版本号全局保持一致:
如果使用Kotlin DSL(dependencies { compileOnly 'org.projectlombok:lombok:你的Lombok版本号' annotationProcessor 'org.projectlombok:lombok:和上面完全一致的版本号' // 测试代码如果也用到Lombok,补充以下配置 testCompileOnly 'org.projectlombok:lombok:和上面完全一致的版本号' testAnnotationProcessor 'org.projectlombok:lombok:和上面完全一致的版本号' }build.gradle.kts),添加以下配置:dependencies { compileOnly("org.projectlombok:lombok:你的Lombok版本号") annotationProcessor("org.projectlombok:lombok:和上面完全一致的版本号") testCompileOnly("org.projectlombok:lombok:和上面完全一致的版本号") testAnnotationProcessor("org.projectlombok:lombok:和上面完全一致的版本号") } - 校验Gradle构建委托配置
打开IDEA设置路径Settings > Build, Execution, Deployment > Build Tools > Gradle,查看Build and run using、Run tests using两个选项:如果选中的是Gradle,必须保证上一步的Gradle侧Lombok配置正确;如果临时切换为IntelliJ IDEA选项后构建成功,可直接确认问题根因为Gradle侧未正确配置Lombok注解处理器。 - 清理缓存全量重建
配置修改完成后,先在项目根目录执行gradle clean清空旧构建产物,再点击IDEA菜单File > Invalidate Caches...,勾选清除文件系统缓存和本地历史后重启IDEA,再重新执行构建,不要直接使用增量构建,避免旧错误缓存残留。 - 排查版本兼容性问题
如果项目使用JDK17及以上版本,Lombok版本必须升级到1.18.22及以上,低版本Lombok不支持高版本JDK的字节码生成逻辑,会导致构建时方法生成失败;同时可执行gradle dependencies | grep lombok检查依赖树,排除传递依赖引入的低版本Lombok,保证全局只有一个Lombok版本生效。
内容的提问来源于stack exchange,提问作者Tarun Chaudhary
相关产品推荐
相关产品推荐

