Windows环境下Maven编译时Lombok生成的Getter/Setter无法识别怎么办?
解决Maven编译时Lombok注解失效问题
你的核心问题是Maven编译阶段没有加载Lombok的注解处理器——IDE能识别Lombok注解所以没有红报错,但Maven原生编译不会自动处理这些注解,导致getter/setter、构造器都没生成,最终编译失败。
修复步骤
1. 修改pom.xml,配置Maven编译器插件
在pom.xml中添加maven-compiler-plugin配置,明确指定Lombok作为注解处理器。修改后的完整pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.minimal_reproducible_example</groupId> <artifactId>stack_overflow_mre</artifactId> <version>1.0-SNAPSHOT</version> <name>stack_overflow_mre</name> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <exec.mainClass>${project.groupId}.App</exec.mainClass> <!-- 统一管理Lombok版本 --> <lombok.version>1.18.38</lombok.version> </properties> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope> </dependency> </dependencies> <!-- 新增编译器插件配置,启用Lombok注解处理器 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.13.0</version> <configuration> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build> </project>
2. 升级Lombok版本(关键)
你使用的JDK是23.0.1,而Lombok 1.18.36仅支持到JDK 21,版本不兼容会导致注解处理器无法正常工作。必须把Lombok版本升级到1.18.38或更高(1.18.38开始支持JDK 23)。
3. 验证修复
- 执行
mvn clean install重新编译项目 - 如果仍有问题,检查VS Code设置:
- 打开设置,搜索
java.compiler.annotationProcessing.enabled,确保选项设为true - 清理本地Maven仓库中Lombok的缓存(路径一般为
~/.m2/repository/org/projectlombok),重新下载依赖
- 打开设置,搜索
关于“短暂工作”的现象解释
之前临时能用是因为VS Code后台自动生成了Lombok代码并缓存,但mvn clean会清空编译产物,Maven重新编译时因为没配置注解处理器,无法生成代码,所以再次失效。
内容的提问来源于stack exchange,提问作者Camille F.
相关产品推荐
相关产品推荐

