news 2026/7/26 11:57:44

MapStruct Plus 版本对lombak1.18.16,1.18.20依赖冲突

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MapStruct Plus 版本对lombak1.18.16,1.18.20依赖冲突

Lombok 1.18.x与 MapStruct Plus 的集成冲突。

这个冲突的核心在于编译期注解处理器的执行顺序:Lombok 先生成 getter/setter 等方法,MapStruct 需要依赖这些方法来生成映射代码。如果顺序错乱,MapStruct 就会因为“找不到方法”而编译失败。

这里有一个关键点:Lombok 1.18.16 是一个分水岭。从这个版本开始,集成方式发生了变化。

💡 解决方案:在pom.xml中配置注解处理器路径

最可靠的解决方案,是在项目的pom.xml文件中,通过maven-compiler-plugin插件的annotationProcessorPaths显式指定注解处理器的声明顺序依赖

关键是顺序,以下是推荐配置,Lombok 及其绑定工具必须在前

xml

<properties> <lombok.version>1.18.36</lombok.version> <!-- 使用你实际的 Lombok 版本 --> <mapstruct-plus.version>1.4.8</mapstruct-plus.version> <!-- 使用你实际的 MapStruct Plus 版本 --> <lombok-mapstruct-binding.version>0.2.0</lombok-mapstruct-binding.version> </properties> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <annotationProcessorPaths> <!-- 1️⃣ 必须最先声明 Lombok 自身 --> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </path> <!-- 2️⃣ 为解决高版本 Lombok 兼容性问题,添加官方桥接器 --> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok-mapstruct-binding</artifactId> <version>${lombok-mapstruct-binding.version}</version> </path> <!-- 3️⃣ 最后声明 MapStruct Plus 处理器 --> <path> <groupId>io.github.linpeilie</groupId> <artifactId>mapstruct-plus-processor</artifactId> <version>${mapstruct-plus.version}</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build>

🔧 其他关键排查步骤

如果配置后仍有问题,可以尝试以下步骤:

  • 排除依赖冲突:MapStruct Plus 已经内嵌了 MapStruct。请检查并排除项目中其他依赖(如springfox-swagger2)传递进来的org.mapstruct相关包,避免版本冲突。

  • 执行清理和重新编译:在项目根目录执行mvn clean compile

  • 检查 IDE 设置:确保你的 IDE(如 IDEA)已经开启了“注解处理器”(Annotation Processing)功能。

  • 排查 Devtools 干扰:如果项目中引入了spring-boot-devtools,可以尝试暂时移除,因为它会修改类加载器,有时会导致奇怪的问题。

💎 总结

解决 Lombok 与 MapStruct Plus 冲突的关键在于两点:

  1. 通过annotationProcessorPaths强制规定执行顺序:确保 Lombok 处理器先执行。

  2. 引入官方桥接器:对于Lombok 1.18.16+,需要添加lombok-mapstruct-binding依赖来确保兼容性。

按照上述配置操作,应该能解决你遇到的冲突。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/26 11:53:23

深入解析ePWM动作限定子模块:PWM波形生成的核心机制与配置实践

1. ePWM动作限定子模块&#xff1a;PWM波形生成的核心机制与配置详解 在电机驱动、数字电源或者任何需要精确控制功率开关的嵌入式系统里&#xff0c;PWM&#xff08;脉冲宽度调制&#xff09;波形的生成质量直接决定了整个系统的性能上限。我们常常在数据手册里看到“支持互补…

作者头像 李华
网站建设 2026/7/26 11:53:21

Windows命名管道(IPC)原理与高效通信实践

1. 命名管道基础概念解析命名管道&#xff08;Named Pipe&#xff09;是Windows系统中一种经典的进程间通信&#xff08;IPC&#xff09;机制&#xff0c;它允许完全不相关的进程通过文件系统路径进行数据交换。与匿名管道不同&#xff0c;命名管道具有持久化的系统对象名称&am…

作者头像 李华
网站建设 2026/7/26 11:53:19

C++11智能指针:RAII与所有权模型解析及面试高频考点

1. 项目概述&#xff1a;为什么C11的智能指针是面试必考点&#xff1f; 如果你是一名C开发者&#xff0c;或者正在准备C相关的面试&#xff0c;那么“智能指针”这个词你肯定不陌生。它几乎是所有C面试官都会触及的领域&#xff0c;从初级到资深&#xff0c;不同深度的考察点都…

作者头像 李华
网站建设 2026/7/26 11:53:10

C语言文件版通讯录:从链表到文件I/O的工程实践与面试深度解析

1. 项目概述&#xff1a;一个文件版通讯录的深层价值最近在整理硬盘&#xff0c;翻出来一个大学时期写的C语言通讯录程序&#xff0c;当时为了应付课程设计&#xff0c;功能简陋得很。现在再看&#xff0c;结合这些年面试别人和被面试的经验&#xff0c;发现一个看似简单的“文…

作者头像 李华
网站建设 2026/7/26 11:52:17

GameCenterManager多人对战开发指南:从设置到实战的完整教程

GameCenterManager多人对战开发指南&#xff1a;从设置到实战的完整教程 【免费下载链接】GameCenterManager iOS Game Center helper singleton 项目地址: https://gitcode.com/gh_mirrors/ga/GameCenterManager GameCenterManager是一款强大的iOS Game Center辅助工具…

作者头像 李华