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

Spring多模块项目borrow-service执行mvn clean install编译失败求助

问题分析与解决方案

编译错误提示找不到com.ky.amqp下的包和类,本质是Maven构建时无法获取到amqp模块的编译产物,结合本地IDE正常、命令行构建失败的现象,核心问题及解决办法如下:

1. 未预先构建amqp模块到本地仓库

IDE开发时会自动关联模块依赖,直接读取amqp模块的源码编译产物,但单独执行mvn clean install构建borrow-service时,Maven会优先从本地/远程仓库查找amqp的jar包,如果amqp模块还没被install到本地仓库,就会出现类找不到的错误。

解决办法:

  • 优先在项目根目录执行mvn clean install,确保所有依赖模块(包括amqp)都被构建并安装到本地Maven仓库;
  • 若只想单独构建borrow-service,先进入amqp模块目录执行mvn clean install,再回到borrow-service模块执行构建命令。

2. amqp模块的Spring Boot打包方式导致依赖无法识别

Spring Boot模块默认打包成可执行jar,这种jar的目录结构包含BOOT-INF/classes,Maven编译时无法直接读取里面的类。如果amqp模块是作为工具模块被其他模块依赖(而非独立运行的应用),需要调整打包配置。

解决办法:
修改amqp模块的pom.xml,调整Spring Boot Maven插件配置,生成可被依赖的普通jar:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>repackage</id>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <classifier>exec</classifier>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

构建后会生成两个jar:amqp-0.0.1-SNAPSHOT.jar(普通依赖jar)和amqp-0.0.1-SNAPSHOT-exec.jar(可执行jar),其他模块依赖时会自动使用普通jar。

3. Spring Boot父版本不一致

amqp模块使用的Spring Boot父版本是3.1.3,borrow-service是3.1.2,版本不一致可能引发依赖传递冲突,虽不是直接导致类找不到的原因,但建议统一版本避免潜在问题。

解决办法:
修改borrow-service的pom.xml,将父版本改为3.1.3,与amqp模块保持一致:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.1.3</version>
    <relativePath/>
</parent>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 08:26:29