Maven BOM 用于解决对 Spring + Spring 数据 + Spring 安全性的依赖?

Maven BOM for solving dependencies on Spring + Spring Data + Spring Security?

Spring Data Jpa Docs suggest to use Maven BOM (bill of materials) 由于:

Due to different inception dates of individual Spring Data modules, most of them carry different major and minor version numbers. The easiest way to find compatible ones is by relying on the Spring Data Release Train BOM we ship with the compatible versions defined. In a Maven project you’d declare this dependency in the <dependencyManagement/> section of your POM

提供了对 official example 的引用。

我了解 BOM 和 dependencyManagement。供应商正式向我们(开发人员)提供 tested/recommended/supported 兼容性列表。 太棒了!

为了同步移动版本,我需要一些管理以下 BOM 的“超级 BOM”:

org.springframework:spring-framework-bom
org.springframework.data:spring-data-releasetrain
org.springframework.security:spring-security-bom

如何选择兼容的?

是否有 SPRING-SUPER-BOM 用于所有保护伞(我的意思是官方或社区支持,所以我通过避免故障排除来节省我的时间,如果发生这种情况,我发现并解决了问题 - 我可以选择将解决方案返回给社区)?

NEW 感谢您指出 Spring 平台弃用 @jumping_monkey.

现在你应该转播 org.springframework.boot:spring-boot-dependencies。这并不意味着您开始使用 Spring Boot。这仅表示您正在使用 Spring Boot!

托管的依赖管理

因此您的构建文件可以如下所示:

apply plugin: 'io.spring.dependency-management'
dependencyManagement {
    imports {
        mavenBom "org.springframework.boot:spring-boot-starter-parent:${projSpringBootVersion}"
        mavenBom "org.springframework.cloud:spring-cloud-starter-parent:${projSpringCloudVersion}"
        mavenBom "org.springframework.cloud:spring-cloud-gcp-dependencies:${projSpringGcpVersion}"
    }
    applyMavenExclusions = false
}

请注意,spring-boot-starter-parentspring-cloud-starter-parent 的版本之间仍然存在不确定性。但没关系。至少它们有助于管理 Hibernate/Jeckson/whatever!

的版本

OLD 感谢 @M.Deinum 指向 Spring IO platform

此项目提供各种 Spring 项目及其依赖项的版本。

实际依赖可以在相应的http://docs.spring.io/platform/docs/ or from https://github.com/spring-io/platform/blob/master/platform-bom/pom.xml file by viewing at different tags: https://github.com/spring-io/platform/tags

中检查

使用本地 Git 克隆很容易做到:

$ git clone https://github.com/spring-io/platform.git
$ cd platform/
$ git tag --list
$ git co v1.0.2.RELEASE
$ less platform-bom/pom.xml

但是你没有在这里找到 spring-core/spring-mvc/string-data/spring-security 的依赖项,因为它们在父 pom spring-boot-starter-parent 中,实际上还包括 spring-boot-dependencies.

spring-boot-dependencies 具有对

的版本和依赖性
  • spring-framework-bom
  • spring-data-releasetrain
  • spring-security-bom
  • spring-integration-bom

因此,如果您的应用非常广泛 - 您可以使用 io.spring.platform:platform-bom。但是如果那个过于复杂的列表只是使用 org.springframework.boot:spring-boot-dependencies 作为 dependencyManagement.