Spring Maven项目部署时无法解析admin-service依赖,请求排查原因
Spring Boot Maven模块部署依赖解析失败问题排查
模块配置信息
admin-service的pom.xml
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.3</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.springframework</groupId> <artifactId>sai-edm-adminpanel</artifactId> <version>0.0.1-SNAPSHOT</version> <name>sai-edm-adminpanel</name> <description>sai-edm-adminpanel</description> <properties> <java.version>17</java.version> </properties>
authorization service的pom.xml(依赖admin-service)
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.3</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.springframework</groupId> <artifactId>sai-edm-auth</artifactId> <version>0.0.1-SNAPSHOT</version> <name>sai-edm-auth</name> <description>sai-edm-auth</description> <properties> <java.version>17</java.version> <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>com.springframework</groupId> <artifactId>sai-edm-adminpanel</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency>
部署错误信息
Failed to execute goal on project sai-edm-auth: Could not resolve dependencies for project com.springframework:sai-edm-auth:jar:0.0.1-SNAPSHOT: Could not find artifact com.springframework:sai-edm-adminpanel:jar:0.0.1-SNAPSHOT in spring-milestones (https://repo.spring.io/milestone) -> [Help 1]
问题原因分析
- 本地与部署环境仓库不一致:本地运行正常是因为
admin-service的jar已安装到你的本地Maven仓库(~/.m2/repository),但部署环境的Maven仓库中没有这个SNAPSHOT版本的jar包,Maven只能从配置的远程公共仓库(此处为spring-milestones)查找,自然找不到自定义模块的产物。 - 自定义模块未上传至部署可访问的仓库:你的
admin-service是私有模块,SNAPSHOT版本不会自动同步到公共仓库,部署环境无法从公共仓库拉取该依赖。 - 缺少多模块统一管理:当前两个模块是独立的Spring Boot项目,没有通过父pom关联,部署时无法自动触发依赖模块的构建与安装。
解决方案
方案1:在部署环境手动安装admin-service
进入部署环境中admin-service的根目录,执行Maven安装命令:
mvn clean install
该命令会将admin-service的jar包安装到部署环境的本地Maven仓库,之后部署sai-edm-auth时即可找到依赖。
方案2:搭建私有Maven仓库(如Nexus、Artifactory)
- 在两个模块的pom.xml中配置私有仓库地址;
- 执行
mvn clean deploy将admin-service的SNAPSHOT版本上传至私有仓库; - 确保部署环境的Maven配置能访问该私有仓库,部署
sai-edm-auth时即可自动拉取依赖。
方案3:重构为多模块Maven项目
- 创建父pom项目,将两个模块作为子模块:
<groupId>com.springframework</groupId> <artifactId>sai-edm-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>sai-edm-adminpanel</module> <module>sai-edm-auth</module> </modules> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.3</version> </parent> <properties> <java.version>17</java.version> <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version> </properties>
- 修改子模块的parent为父pom,移除重复的groupId和version:
admin-service子模块修改后:
<parent> <groupId>com.springframework</groupId> <artifactId>sai-edm-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>sai-edm-adminpanel</artifactId> <name>sai-edm-adminpanel</name> <description>sai-edm-adminpanel</description> <properties> <java.version>17</java.version> </properties>
- 在父项目根目录执行
mvn clean install,会自动构建并安装所有子模块,后续部署sai-edm-auth时可直接依赖本地构建的模块。
内容的提问来源于stack exchange,提问作者Borka192
相关产品推荐
相关产品推荐

