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

Spring Boot多模块项目SAM构建失败:依赖模块符号找不到

Spring Boot多模块项目AWS SAM构建依赖错误排查与解决

问题现象

Spring Boot多模块项目,本地通过Maven命令或IntelliJ IDE构建正常,已执行mvn install,但使用AWS SAM执行sam build时,依赖本地Api模块的Register模块编译失败,提示找不到com.careerwatch.Api相关的包、类及符号。

报错核心原因

Api模块使用了Spring Boot Maven插件的repackage目标,默认会将生成的jar替换为可执行jar。这种jar的类文件都放在BOOT-INF/classes目录下,而非普通jar的根目录结构,导致Register模块在依赖Api模块的jar时,无法找到对应的包和类。

本地构建正常是因为多模块项目内依赖时,Maven直接引用Api模块编译后的target/classes目录,而非jar文件;而SAM构建会将代码复制到临时目录,执行完整的Maven生命周期,Register模块依赖的是Api模块install到临时仓库的可执行jar,从而触发编译错误。

解决方案

1. 修改Api模块的Spring Boot Maven插件配置

在Api模块的pom.xml中,给spring-boot-maven-plugin添加classifier配置,让插件同时生成普通依赖jar和可执行jar:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>3.0.6</version>
            <configuration>
                <!-- 指定可执行jar的后缀,生成普通jar和带exec后缀的可执行jar -->
                <classifier>exec</classifier>
            </configuration>
        </plugin>
    </plugins>
</build>

配置后,Api模块会生成两个jar:

  • Api-0.0.1-SNAPSHOT.jar:普通结构的jar,供其他模块依赖使用
  • Api-0.0.1-SNAPSHOT-exec.jar:可执行jar,用于单独运行Api模块

2. 验证Register模块的依赖配置

确保Register模块的pom.xml中对Api模块的依赖坐标正确,无需额外修改,Maven会自动识别普通jar作为依赖:

<dependency>
    <groupId>com.backend</groupId>
    <artifactId>Api</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

3. 重新执行SAM构建

先清理本地构建产物,再执行SAM构建:

mvn clean install
sam build

额外优化建议

在template.yml中,建议将每个函数的CodeUri指向对应的模块目录,避免SAM构建整个项目时的冗余操作:

  • CareerWatchFunction的CodeUri改为./Api
  • RegisterFunction的CodeUri改为./Register

修改后的template.yml片段:

Resources:
  CareerWatchFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: ./Api
      # 其他配置不变...
  RegisterFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: ./Register
      # 其他配置不变...

内容的提问来源于stack exchange,提问作者Emiliano Escobedo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 01:52:01