求助:Spring Boot 2.7.5无法覆盖snakeyaml版本至1.33的问题
解决Spring Boot 2.7.5中snakeyaml版本覆盖失效的问题
先确认容器内实际依赖版本
别光看本地有效pom,先排查GitLab流水线容器里的真实依赖情况:
- 在流水线的maven执行步骤中加命令:
mvn dependency:tree -Dincludes=org.yaml:snakeyaml,查看完整依赖树,确认是否还有1.30版本的间接引用 - 如果是打包成jar包,解压容器内的最终jar,检查
BOOT-INF/lib下的snakeyaml文件名,看版本号到底是多少
显式排除旧版本再引入新依赖
直接在Spring Boot核心starter里排除默认的1.30版本,再手动引入1.33:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>1.33</version> </dependency>
清理GitLab流水线的依赖缓存
流水线可能缓存了旧的1.30版本依赖,导致没拉取新包:
- 在maven构建命令里加
-U参数强制更新:mvn clean install -U - 去GitLab项目的CI/CD设置里,手动清除依赖缓存,避免缓存干扰
检查SonarQube扫描的目标路径
有时候SonarQube扫的是旧的构建产物:
- 确保流水线步骤先执行
clean再执行build,删除旧的jar或编译文件 - 核对SonarQube扫描配置,确认扫描路径指向的是最新构建的产物目录
排查第三方依赖的间接引入
有些第三方依赖可能自己硬编码了snakeyaml 1.30版本,没遵循Spring Boot的依赖管理:
- 执行
mvn dependency:tree,搜索所有org.yaml:snakeyaml条目,找到除Spring Boot starter外的引用来源 - 对这些第三方依赖也添加排除规则,确保整个依赖树里只有1.33版本
内容的提问来源于stack exchange,提问作者Kapil Bablani
相关产品推荐
相关产品推荐

