Spring Boot多模块Maven项目Lombok注解构建失败问题排查
从你的配置细节来看,Maven构建时Lombok的@Data注解不生效,核心是两个配置问题导致的:
1. 父POM全局禁用了注解处理器
在父POM的pluginManagement区块中,maven-compiler-plugin配置了<compilerArgument>-proc:none</compilerArgument>,这个参数的作用是强制关闭所有注解处理器的执行。而Lombok正是通过注解处理器来自动生成getter/setter代码的,所以即便你在子模块里配置了annotationProcessorPaths,这个全局禁用的参数会直接覆盖子模块的配置,导致Lombok完全无法工作。
2. Lombok版本变量未定义
你的example-common模块POM中使用了${lombok.version}来指定Lombok版本,但不管是父POM还是子POM的properties里都没有定义这个变量值。Maven构建时会无法解析这个变量,间接影响注解处理器的正常加载。
具体修复步骤
步骤1:移除父POM中禁用注解处理器的配置
修改父POM里pluginManagement下的maven-compiler-plugin配置,删除<compilerArgument>-proc:none</compilerArgument>这一行:
<pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven-compiler-plugin.version}</version> <configuration> <source>${java-version}</source> <target>${java-version}</target> <!-- 移除该行:<compilerArgument>-proc:none</compilerArgument> --> </configuration> </plugin> </plugins> </pluginManagement>
步骤2:添加Lombok版本属性
在父POM的properties块中添加Lombok的版本(建议使用与Spring Boot 2.1.1.RELEASE兼容的版本,比如官方适配的1.18.4):
<properties> <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version> <java-version>1.8</java-version> <lombok.version>1.18.4</lombok.version> <!-- 新增该行 --> </properties>
步骤3:简化子模块的编译器配置
由于父POM已经在pluginManagement里统一定义了编译器的source和target版本,子模块的maven-compiler-plugin可以简化,只保留注解处理器路径的配置即可:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build>
完成以上修改后,执行mvn clean install重新构建,Lombok就能正常生成getter/setter方法了。IDE中正常是因为IDE单独配置了Lombok插件,而Maven构建完全依赖编译器注解处理器的配置,所以必须确保Maven的编译器配置正确开启注解处理器。
内容的提问来源于stack exchange,提问作者The Coder




