spring-boot-maven-plugin build-image下载spring-cloud-bindings失败
问题根因
Spring Boot 2.7.1 版本的 spring-boot-maven-plugin 执行 build-image 构建目标时,硬编码依赖 spring-cloud-bindings:1.10.0,该版本制品已从 repo.spring.io release 仓库移除,因此本地、AWS CodeBuild 等所有环境执行同名构建任务都会触发下载报错。
解决方案
按落地成本从低到高选择以下方案:
- 升级Spring Boot补丁版本(最优方案)
将项目Spring Boot版本从2.7.1升级至2.7.2及以上的2.7.x稳定版本(2.7.x分支最终维护版为2.7.18)。官方已在后续补丁版本中替换了不可用的spring-cloud-bindings依赖版本,无需额外调整插件配置即可直接正常构建。 - 锁版本覆盖默认配置(适配无法升级Spring Boot的场景)
若项目受依赖限制暂时无法升级Spring Boot版本,可直接在spring-boot-maven-plugin的配置中通过buildpack环境变量显式指定可用的spring-cloud-bindings版本,覆盖插件默认的硬编码值,配置示例如下:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <image> <env> <!-- 可选择1.9.0、1.10.1等公开发布的稳定可用版本 --> <BP_SPRING_CLOUD_BINDINGS_VERSION>1.9.0</BP_SPRING_CLOUD_BINDINGS_VERSION> </env> </image> </configuration> </plugin>
- 私服兜底方案
若企业内部有私有Maven制品库,可提前将可用版本的spring-cloud-bindingsjar包上传至私服,配置CodeBuild构建环境的Maven settings优先走私服拉取依赖,即可绕过公网仓库资源缺失的问题。
验证方式
配置调整完成后,先在本地执行 mvn clean spring-boot:build-image 命令,确认依赖下载正常、镜像构建无报错后,再将变更推送到CodeBuild流水线执行,避免无效构建消耗流水线资源。
内容的提问来源于stack exchange,提问作者Matteo Turra
相关产品推荐
相关产品推荐

