You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot多模块构建时Lombok方法未生成导致编译失败

解决多模块项目中Lombok编译失败问题

核心问题分析

运行时正常是因为IDE默认启用了Lombok插件,会自动处理注解生成代码;但Maven构建时,common模块编译阶段没有正确触发Lombok注解处理器,导致生成的class文件里没有get/set、builder这些方法,下游的module_one编译时自然找不到符号。

分步解决方案

1. 统一父pom的Lombok依赖配置

在父项目pom.xml中统一管理Lombok版本,避免子模块版本不一致:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.30</version> <!-- 必须用适配Java17的版本,1.18.24及以上均可 -->
            <scope>provided</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

2. 配置common模块的注解处理器

common作为共享库,必须在自身编译阶段生成Lombok代码,因此在common的pom.xml中添加maven-compiler-plugin并指定Lombok为注解处理器:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version> <!-- 适配Java17的插件版本 -->
            <configuration>
                <source>17</source>
                <target>17</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>${lombok.version}</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>

同时在common的pom.xml中引入Lombok依赖:

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
</dependencies>

3. 正确配置module_one的模块化与依赖

  • 在module_one的module-info.java中,确保对common的依赖为requires transitive,同时声明Lombok为静态依赖:
module com.demo.module_one {
    requires transitive com.demo.common;
    requires static lombok;
    requires org.springframework.boot;
    requires org.springframework.boot.autoconfigure;

    opens com.demo.module_one to org.springframework.boot;
    exports com.demo.module_one;
}
  • module_one的pom.xml只需引入common依赖,无需重复配置Lombok注解处理器(common已编译好带Lombok生成方法的class文件):
<dependencies>
    <dependency>
        <groupId>com.demo</groupId>
        <artifactId>common</artifactId>
        <version>${project.version}</version>
    </dependency>
    <!-- Spring Boot相关依赖 -->
</dependencies>

4. 清理并重新构建

执行以下命令彻底清理并构建项目:

mvn clean install -DskipTests

关键注意点

  • 必须使用适配Java17的Lombok版本,老版本对模块化和Java17的支持存在缺陷。
  • 上游模块(common)必须自行完成Lombok注解处理,不能依赖下游模块(module_one)处理。
  • 确保命令行Maven与IDE使用的Maven版本一致,避免配置差异导致的问题。

内容的提问来源于stack exchange,提问作者Stack Spring

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:57:26