Maven项目编译时无法识别Lombok生成的Getter/Setter方法
问题根因
IDE安装的Lombok插件仅覆盖代码编辑阶段的语法解析、提示补全逻辑,不会参与Maven构建流程的实际编译过程。编译期抛出找不到符号的错误,核心原因是Maven构建环节Lombok注解处理器未正常工作,没有为标注@Getter/@Setter的类生成对应的get/set方法,和IDE插件是否正常运行没有直接关联。
常见场景与修复方法
- maven-compiler-plugin显式指定注解处理器路径时遗漏Lombok
不少项目会在maven-compiler-plugin配置中通过<annotationProcessorPaths>节点显式声明所有用到的注解处理器来加快编译速度,一旦配置了该节点,Maven就不会自动从项目依赖中扫描加载注解处理器,哪怕Lombok已经以provided scope引入也不会被识别。需要在该节点下补充Lombok的配置:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <annotationProcessorPaths> <!-- 其他已配置的注解处理器,如mapstruct等 --> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> </path> </annotationProcessorPaths> </configuration> </plugin> - 注解处理被全局关闭
检查当前项目POM、继承的父POM或Maven全局settings配置中,是否存在<maven.compiler.proc>none</maven.compiler.proc>的配置项,该配置会直接禁用编译期所有注解处理器的执行,删除该配置或将值改为full即可恢复正常。 - Lombok版本与JDK版本不匹配
当前使用的1.18.24版本Lombok最高仅支持到JDK18,如果项目本地/构建环境用的是JDK19及以上版本(比如JDK21),需要将Lombok升级到对应适配版本,JDK21环境至少需要1.18.30及以上版本的Lombok。 - 增量编译缓存脏数据
如果之前构建时出现过Lombok失效的情况,target目录下残留的旧class文件会被增量编译逻辑复用,直接在项目根目录执行mvn clean compile清空所有历史编译产物后重新构建即可。 - 注解导入错误
检查ResourceDAO类上的@Getter、@Setter注解是否导入的是lombok包下的对应类,避免误引入其他第三方依赖中同名的无效注解。
内容的提问来源于stack exchange,提问作者Duke
相关产品推荐
相关产品推荐

