BUG: 解决新版本SpringBoot3.4.3在创建项目时勾选lombok但无法使用的问题

前言

当使用Spring Boot 3.4.3创建新项目时,即使正确勾选Lombok依赖,编译时仍出现找不到符号 的错误,但代码中Lombok注解的使用完全正确

原因

Spring Boot 3.4.3在自动生成的pom.xml中新增了maven-compiler-plugin的配置,该插件用于管理注解处理器路径。但该配置存在以下两个潜在问题:

xml 复制代码
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <annotationProcessorPaths>
                    <!-- 未指定Lombok版本可能导致依赖解析问题 -->
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludes>
                    <!-- 错误排除了Lombok依赖 -->
                    <exclude>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                    </exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>

解决方案

方案一

我的解决方案,简单粗暴,直接将新增的maven-compiler-plugin注释掉,并且重新刷新Maven

注意:

重新刷新Maven时,如果你光点击悬浮的刷新按钮,还是会报错!!

需要点击右侧的Maven图标,点击重新加载所有Maven项目,才可

但当我可以正常运行后,我把原来注释掉的代码放开,刷新后,重新运行,居然可以运行!!我也不知道为啥,很奇怪?

方案二:最佳实践

该方案是DeepSeek给我的解决方案,亲测有效

1. 明确指定lombok版本

xml 复制代码
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.32</version>
    <scope>provided</scope>
</dependency>

2.修改插件配置

xml 复制代码
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version> <!-- 明确指定插件版本 -->
            <configuration>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>1.18.32</version> <!-- 指定Lombok版本 -->
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludes>
                    <!-- 移除不必要的Lombok排除配置, -->
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>

但是这里我不是很理解,为啥spring-boot-maven-plugin的排除配置没有必要?

这是DeepSeek给我的回答

相关推荐
小马爱记录16 分钟前
sentinel规则持久化
java·spring cloud·sentinel
地藏Kelvin21 分钟前
Spring Ai 从Demo到搭建套壳项目(二)实现deepseek+MCP client让高德生成昆明游玩4天攻略
人工智能·spring boot·后端
一个有女朋友的程序员29 分钟前
Spring Boot 缓存注解详解:@Cacheable、@CachePut、@CacheEvict(超详细实战版)
spring boot·redis·缓存
可乐鸡翅好好吃40 分钟前
通过BUG(prvIdleTask、pxTasksWaitingTerminatio不断跳转问题)了解空闲函数(prvIdleTask)和TCB
c语言·stm32·单片机·嵌入式硬件·bug·keil
长勺1 小时前
Spring中@Primary注解的作用与使用
java·后端·spring
紫乾20141 小时前
idea json生成实体类
java·json·intellij-idea
wh_xia_jun1 小时前
在 Spring Boot 中使用 JSP
java·前端·spring boot
网安INF1 小时前
CVE-2020-17518源码分析与漏洞复现(Flink 路径遍历)
java·web安全·网络安全·flink·漏洞
Y第五个季节1 小时前
docker-部署Nginx以及Tomcat
java·开发语言
IT-ZXT8881 小时前
Tomcat 线程模型详解&性能调优
java·tomcat