MapStruct嵌套映射结合Lombok无法流畅运行问题求助
MapStruct 1.2 + Lombok 嵌套映射:解决"找不到setTargetPrime方法"问题
嘿,我之前也踩过这个MapStruct和Lombok配合的坑!明明官方说1.2版本已经和Lombok开箱即用,结果编译时愣是找不到嵌套对象的setter方法,手动加了getter/setter就正常——这大概率是注解处理器的执行顺序或者配置问题在搞鬼,咱们来一步步解决它:
问题根源
MapStruct是在编译期生成映射实现代码的,而Lombok也是在编译期动态生成getter/setter。如果MapStruct的处理器先运行,这时候Lombok还没生成targetPrime的setter方法,MapStruct就会认为这个方法不存在,抛出编译错误。
解决方案
1. 调整注解处理器执行顺序(核心!)
无论是Maven还是Gradle,都要确保Lombok的处理器先于MapStruct执行,这样MapStruct生成代码时就能看到Lombok生成的getter/setter了。
Maven配置示例
一定要用annotationProcessorPaths来管理注解处理器而不是普通的dependency,明确指定顺序:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <!-- 适配你的JDK版本 --> <configuration> <source>1.8</source> <target>1.8</target> <annotationProcessorPaths> <!-- 先放Lombok,确保它先生成getter/setter --> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> <!-- 建议用1.16.14+版本 --> </path> <path> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>1.2.0.Final</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build>
Gradle配置示例
同样要保证Lombok的annotationProcessor依赖先声明:
dependencies { // 核心依赖 implementation 'org.mapstruct:mapstruct:1.2.0.Final' implementation 'org.projectlombok:lombok:1.18.24' // 注解处理器,顺序很重要!Lombok在前 annotationProcessor 'org.projectlombok:lombok:1.18.24' annotationProcessor 'org.mapstruct:mapstruct-processor:1.2.0.Final' }
2. 检查Lombok版本兼容性
MapStruct 1.2要求Lombok版本至少是1.16.14,如果你的Lombok版本太老,可能会出现兼容性问题,导致生成的getter/setter不被MapStruct识别。建议升级到1.18.x系列的稳定版本。
3. IDEA用户额外配置
如果你用IDEA开发,还要确保:
- 已经安装了Lombok插件(Settings > Plugins > 搜索Lombok并安装)
- 开启了注解处理器支持(Settings > Build, Execution, Deployment > Compiler > Annotation Processors > 勾选
Enable annotation processing)
验证步骤
- 删掉你手动添加的targetPrime的getter/setter方法
- 执行
mvn clean compile(Maven)或gradle clean compileJava(Gradle) - 编译通过,MapStruct正常生成嵌套映射的代码
这样就能实现官方所说的"开箱即用"了,不用再手动写那些冗余的getter/setter啦!
内容的提问来源于stack exchange,提问作者Crosk Cool
相关产品推荐
相关产品推荐

