Gradle项目中Lombok无法生成Getter和Setter的问题排查
问题描述
我在Spring Boot应用中使用Lombok与Gradle,已安装市场中的Lombok插件,且build.gradle中指定了对应版本,但模型类仍提示需生成Getter和Setter,其他类也无法访问这些方法。我已在根目录添加lombok.config并设置
lombok.addLombokGeneratedAnnotation = true,不清楚遗漏了哪些配置?
提供的配置代码
build.gradle
plugins { id 'org.springframework.boot' version '2.5.0' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.projectlombok:lombok:1.18.30' runtimeOnly 'com.h2database:h2' // annotation processors annotationProcessor 'org.projectlombok:lombok' }
Product实体类
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import lombok.Data; @Entity @Data public class Product { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; }
排查与解决步骤
检查IDE注解处理器开关
以IntelliJ IDEA为例,打开File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors,确保Enable annotation processing选项已勾选。之后执行File > Invalidate Caches...,选择「Invalidate and Restart」清理缓存重启IDE——很多时候IDE缓存会导致Lombok注解不被识别。调整Gradle依赖配置
把当前的Lombok依赖从implementation改为compileOnly(Lombok仅编译期需要,无需打包到运行时),同时补充测试环境的注解处理器配置,修改后的依赖块如下:dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.h2database:h2' // Lombok相关配置 compileOnly 'org.projectlombok:lombok:1.18.30' annotationProcessor 'org.projectlombok:lombok:1.18.30' testCompileOnly 'org.projectlombok:lombok:1.18.30' testAnnotationProcessor 'org.projectlombok:lombok:1.18.30' }优化lombok.config配置
确保文件放在项目根目录(和build.gradle同级),并添加以下配置提升优先级:lombok.config.stopBubbling = true lombok.addLombokGeneratedAnnotation = truestopBubbling会让当前目录的配置优先于父目录,避免外部配置干扰。验证JDK版本一致性
确认项目配置的JDK(sourceCompatibility = '11')和IDE使用的Project SDK一致,可在File > Project Structure > Project中检查Project SDK是否为JDK11。手动编译验证问题根源
执行Gradle编译命令:- Linux/Mac:
./gradlew build - Windows:
gradlew.bat build
如果编译成功,说明是IDE配置问题,重点排查IDE的注解处理器和缓存;如果编译失败,根据报错信息定位依赖冲突或配置错误。
- Linux/Mac:
内容的提问来源于stack exchange,提问作者Loren

