0

目前在我的项目中,我在我的内部导入了 2 个 bom 依赖项(用于 spring cloud 和 spring cloud-gcp)build.gradle

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:Greenwich.SR3"
        mavenBom "org.springframework.cloud:spring-cloud-gcp-dependencies:1.2.1.RELEASE"
    }
}

我怀疑它是否正确,因为spring-cloud可能与spring-cloud-gcp. 但是我找不到一个通用的 BOM 文件。

你能澄清一下这个问题吗?

4

1 回答 1

0

这是对的。导入 Spring Cloud GCP BOM 允许您省略指定其他 Spring Cloud GCP 依赖项的版本。

通常,您需要将 Spring Cloud GCP 与 Spring Cloud 对齐。也就是说,Spring Cloud GCP 的一个版本是在 Spring Cloud 的特定发布列车上测试/构建的。

因此,对于您的示例,查看 v1.2.1.RELEASE 的父级,我看到:

https://github.com/spring-cloud/spring-cloud-gcp/blob/v1.2.1.RELEASE/spring-cloud-gcp-dependencies/pom.xml#L8

<parent>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies-parent</artifactId>
    <version>2.2.1.RELEASE</version>
    <relativePath/>
</parent>

因此 Spring Cloud GCP v1.2.1.RELEASE 构建在 Spring Cloud v2.2.1.RELEASE 之上。

现在,如果我查看 Spring Cloud 发布系列的发布说明,我会发现 Hoxton.SR1 是 Spring Cloud v2.2.1.RELEASE 所属的发布系列

您的样本中有 Greenwich.SR3。如果我们算上 Hoxton.SR1,那么 Spring Cloud 至少落后 (3) 个版本,(4) 个。

因此,如果您现在没有遇到不兼容问题,那么您将来会遇到,因为很可能在内部,其中一个库正在使用不推荐使用的方法或其他内部发生变化的方法。


我还应该注意,如果您使用https://start.spring.io/并生成带有一些 Spring Cloud GCP 依赖项的 Gradle 项目,则省略​​ Spring Cloud GCP BOM。所以更高版本的 Spring Cloud 可能会管理 GCP 依赖项。您可以尝试升级到最新的 Spring Cloud 发布系列,然后删除 Spring Cloud GCP BOM,看看会发生什么。

于 2020-03-13T12:47:44.147 回答