Spring Cloud GCP 4.1.4 logging starter依赖过时组件,是否为Bug?
问题分析与解答
这不是你的理解有误,属于Spring Cloud GCP适配Spring Boot 3.x过程中存在的依赖过渡兼容问题,具体拆解如下:
1. javax.annotation-api 依赖问题
Spring Boot 3.x 全面切换到 Jakarta EE 规范,所有 javax.* 包都被替换为 jakarta.* 包,但 google-cloud-logging-logback 0.130.9-alpha 作为 Google Cloud Java 客户端的旧版本,尚未完成 Jakarta 规范的迁移,因此还在依赖 javax.annotation-api。这种情况是组件适配滞后导致的,不属于你配置错误。
2. Apache HttpComponents 版本问题
HttpComponents 5.x 是 4.x 的升级大版本,虽然 Spring Boot 3.x 生态更倾向于使用 5.x,但 Google Cloud Java 客户端的旧版本(如 0.130.9-alpha)仍依赖 4.x 系列。这同样是组件版本迭代不同步导致的,并非你的理解偏差。
临时解决方案
- 排除过时依赖并替换:在你的构建文件(Maven
pom.xml或 Gradlebuild.gradle)中,排除google-cloud-logging-logback依赖的javax.annotation-api、httpclient、httpcore,然后手动引入对应的 Jakarta 版本和 HttpComponents 5.x 版本。
示例(Maven):<dependency> <groupId>com.google.cloud</groupId> <artifactId>spring-cloud-gcp-starter-logging</artifactId> <version>4.1.4</version> <exclusions> <exclusion> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> </exclusion> <exclusion> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> </exclusion> <exclusion> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> </exclusion> </exclusions> </dependency> <!-- 引入Jakarta替代包 --> <dependency> <groupId>jakarta.annotation</groupId> <artifactId>jakarta.annotation-api</artifactId> <version>2.1.1</version> </dependency> <!-- 引入HttpComponents 5.x --> <dependency> <groupId>org.apache.httpcomponents.client5</groupId> <artifactId>httpclient5</artifactId> <version>5.2.1</version> </dependency> <dependency> <groupId>org.apache.httpcomponents.core5</groupId> <artifactId>httpcore5</artifactId> <version>5.2.1</version> </dependency> - 关注版本更新:Google Cloud Java 客户端的新版本已经完成了 Jakarta 适配和 HttpComponents 升级,后续 Spring Cloud GCP 可能会更新依赖的客户端版本,你可以留意 Spring Cloud GCP 的发布日志,等待官方修复。
内容的提问来源于stack exchange,提问作者Alpengringo
相关产品推荐
相关产品推荐

