当前位置: 首页 > news >正文

idea2023.3遇到了Lombok失效问题,注释optional和annotationProcessorPaths即可恢复正常

idea2023.3遇到了Lombok失效问题,但是另一个小版本的就没有
自己摸索了下,发现和下面这个链接提出的基本一样:

SpringBoot 3 中Lombok注解失效的几种解决方法

主要就是一个optional标签问题,另一个是annotationProcessorPaths问题
虽然问了chatGPT,optional是为了防止子项目也导入lombok依赖,即使用了
<optional>true</optional>,那么当前模块依赖 Lombok,但下游依赖(其他项目引用你这个 jar)时,不会自动传递 Lombok。

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></path></annotationProcessorPaths></configuration>
</plugin>

作用:显式告诉 Maven 编译插件,在 编译期 使用哪些 注解处理器。
比如 Lombok 的注解处理器会在编译时扫描 @Data、@Getter 等注解,然后生成对应的 getXxx/setXxx、toString 等方法写进 .class 文件。

如果没有 annotationProcessorPaths:
在现代 Maven(3.6+)和 Spring Boot 2.2+ 里,其实会自动发现 Lombok 的注解处理器,所以不写也行。
在老版本 Maven 或 IDE 配置不当时,可能就不生效,需要显式加上。

至于版本号,由于当前项目的parent是spring-boot-starter-parent,他的parent是spring-boot-dependencies已经有了对Lombok的版本管理,其实不加也行
在这里插入图片描述

我这里使用的idea是2023,当然不算老,maven使用idea默认带的仓库,没有自己配置,不知道是否有影响。

但是不管怎么样,看起来上面两个配置都不会导致lombok失效,但是事实却是注释掉两个后,就可以正常使用lombok了。就很离谱

使用clean不断清理target目录,来辅助测试注释不同内容的效果

在这里插入图片描述
使用clean来清理删除target
在这里插入图片描述
至于

<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration>
</plugin>

作用:在 打包成可执行 JAR 的时候,把 Lombok 排除掉,不放进最终的 fat jar。
原因就是 Lombok 只在编译时有用,已经生成的target里面就已经有了Lombok生成后的东西了,运行时不需要Lombok;如果不排除,它会跟着进 jar,增加包体积。
在这里插入图片描述

也可以去打包好的jar包里面,找到对应的bean类【而是在 BOOT-INF/classes/ 对应的包路径下】,即Employee类,发现确实是已经生成好了get/setter方法等,说明lombok生效了
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

可以试用缓存失效的方式【✳】

如果lombok还是不行,或者出现了其他的maven依赖问题,如果你确定当前的maven依赖导入没错,但是就是不生效,那么可以用如下方法

在这里插入图片描述
在这里插入图片描述
全部勾上并点击失效重启。

http://www.dtcms.com/a/356435.html

相关文章:

  • “FAQ + AI”智能助手全栈实现方案
  • 极飞科技AI智慧农业实践:3000亩棉田2人管理+产量提15%,精准灌溉与老农操作门槛引讨论
  • autojs RSA加密(使用public.pem、private.pem)
  • 【拍摄学习记录】03-曝光
  • Lora与QLora
  • 创维E910V10C_晶晨S905L2和S905L3芯片_线刷固件包
  • SpringMVC相关梳理
  • 第三方软件测试:【深度解析SQL注入攻击原理和防御原理】
  • [Mysql数据库] 知识点总结6
  • 《Linux 网络编程六:数据存储与SQLite应用指南》
  • LabVIEW转速仪校准系统
  • uniapp跨平台开发---uni.request返回int数字过长精度丢失
  • uni-app + Vue3 开发H5 页面播放海康ws(Websocket协议)的视频流
  • 学习:uniapp全栈微信小程序vue3后台(6)
  • Uniapp + UView + FastAdmin 性格测试小程序方案
  • 2025最新uni-app横屏适配方案:微信小程序全平台兼容实战
  • 项目一系列-第9章 集成AI千帆大模型
  • 实现自己的AI视频监控系统-第二章-AI分析模块5(重点)
  • js AbortController 实现中断接口请求
  • 【MFC教程】C++基础:01 小黑框跑起来
  • 【MFC应用创建后核心文件详解】项目名.cpp、项目名.h、项目名Dlg.cpp 和 项目名Dlg.h 的区别与作用
  • Java项目打包成EXE全攻略
  • Kafka 副本同步异常与 ISR 收缩故障排查实录
  • C语言————操作符详解
  • 《华为战略管理法:DSTE 实战体系》读书笔记
  • 【完整源码+数据集+部署教程】骨折检测系统源码和数据集:改进yolo11-EfficientHead
  • 【微信小程序】微信小程序基于双token的API请求封装与无感刷新实现方案
  • 华为无线AC主备配置案例
  • KNN算法详解:鸢尾花识别和手写数字识别
  • mysql安全运维之常见攻击类型与防御指南-从SQL注入到权限提升