Lombok 1.18.30 与 SpringBoot 3.4 兼容配置

林欢喜 Java经验 发布时间:2026-01-12 10:07:17 阅读数:14790 1
下文笔者讲述SpringBoot3.4配置Lombok的方法及示例分享,如下所示

核心兼容配置方案

Spring Boot 3.x
   基于Jakarta EE 9+
   而Lombok 1.18.30默认可能存在少量适配问题
    主要需要通过 Maven/Gradle 配置和 Lombok 插件设置来解决。

Maven 配置(最常用)

在 `pom.xml` 中按以下方式配置,
   确保 Lombok 版本和Spring Boot 版本正确匹配
  并添加必要的编译参数:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!-- Spring Boot 父工程 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.4.0</version>
        <relativePath/>
    </parent>

    <groupId>com.example</groupId>
    <artifactId>lombok-springboot-demo</artifactId>
    <version>1.0.0</version>

    <dependencies>
        <!-- Spring Boot 核心依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <!-- Lombok 依赖(指定1.18.30版本) -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.30</version>
            <scope>provided</scope> <!-- 仅编译期使用,不打入包 -->
        </dependency>

        <!-- 测试依赖(可选) -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- Maven 编译插件(关键:指定JDK版本和Lombok参数) -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.11.0</version> <!-- 适配Spring Boot 3.4的版本 -->
                <configuration>
                    <source>17</source> <!-- Spring Boot 3.x最低要求JDK 17 -->
                    <target>17</target>
                    <encoding>UTF-8</encoding>
                    <!-- Lombok适配Jakarta EE的关键参数 -->
                    <compilerArgs>
                        <arg>-J-Dlombok.addLombokGeneratedAnnotation=true</arg>
                        <arg>-J-Dlombok.jakartaEdition=true</arg>
                    </compilerArgs>
                </configuration>
            </plugin>

            <!-- Spring Boot Maven插件 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>3.4.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Gradle配置

如果使用 Gradle(Groovy DSL),在 `build.gradle` 中配置:

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.4.0'
    id 'io.spring.dependency-management' version '1.1.6'
}

group = 'com.example'
version = '1.0.0'

java {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    compileOnly 'org.projectlombok:lombok:1.18.30'
    annotationProcessor 'org.projectlombok:lombok:1.18.30'
    
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testCompileOnly 'org.projectlombok:lombok:1.18.30'
    testAnnotationProcessor 'org.projectlombok:lombok:1.18.30'
}

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
    // Lombok适配Jakarta EE的参数
    options.compilerArgs += [
        '-J-Dlombok.addLombokGeneratedAnnotation=true',
        '-J-Dlombok.jakartaEdition=true'
    ]
}

test {
    useJUnitPlatform()
}

IDE配置(关键补充)

即使依赖配置正确,IDE 也需要适配才能正常识别 Lombok 注解:
1. IntelliJ IDEA:
   - 安装 Lombok 插件(Settings → Plugins → 搜索 Lombok → 安装并重启)
   - 开启注解处理:Settings → Build, Execution, Deployment → 
      Compiler → Annotation Processors → 
      勾选 `Enable annotation processing`
2. Eclipse:
   - 安装 Lombok 插件:将 lombok-1.18.30.jar 双击运行,选择 Eclipse 安装路径完成安装
   - 配置 Eclipse 编译器参数:
      添加 `-Djdt.annotation.processing.enabled=true` 和 `-Djdt.compiler.annotation.processing.enabled=true`

 3. 验证兼容性的示例代码
创建一个简单的实体类和启动类,验证 Lombok 注解是否生效:

代码验证测试

package com.java265.demo;

import lombok.Data;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class LombokDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(LombokDemoApplication.class, args);
    }

    @GetMapping("/test")
    public User testLombok() {
        // 验证@Data注解生成的setter/getter
        User user = new User();
        user.setId(1L);
        user.setName("测试用户");
        return user; // 正常返回说明Lombok生效
    }

    // Lombok注解实体类
    @Data // 包含getter/setter/toString/equals/hashCode等
    static class User {
        private Long id;
        private String name;
    }
}
启动项目后访问 `http://localhost:8080/test`,能正常返回 `{"id":1,"name":"测试用户"}` 即表示配置成功。
1. 核心依赖:
     Lombok 1.18.30 需指定 `provided`(Maven)/`compileOnly`(Gradle)作用域,
      避免打包冲突;
2. 关键参数:
     添加 `lombok.jakartaEdition=true` 
       适配 Spring Boot 3.x 的 Jakarta EE 规范;
3. 环境要求:
      必须使用 JDK 17+(Spring Boot 3.x 最低要求),
      并在 IDE 中开启注解处理功能。
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202601/17681836788536.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者