此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.1Spring中文文档

此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.1Spring中文文档

要管理 Spring Boot 应用程序中的依赖项,您可以应用 io.spring.dependency-management 插件或使用 Gradle 的原生 bom 支持。 前者的主要好处是它提供了基于属性的托管版本自定义,而使用后者可能会导致更快的构建。Spring中文文档

使用依赖管理插件管理依赖关系

当您应用io.spring.dependency-management插件时,Spring Boot的插件会自动从您正在使用的Spring Boot版本导入spring-boot-dependencies bom。 这提供了与 Maven 用户所享受的类似的依赖项管理体验。 例如,它允许您在声明在 bom 中管理的依赖项时省略版本号。 若要使用此功能,请以通常的方式声明依赖项,但省略版本号:Spring中文文档

dependencies {
	implementation('org.springframework.boot:spring-boot-starter-web')
	implementation('org.springframework.boot:spring-boot-starter-data-jpa')
}
dependencies {
	implementation("org.springframework.boot:spring-boot-starter-web")
	implementation("org.springframework.boot:spring-boot-starter-data-jpa")
}

自定义托管版本

应用依赖关系管理插件时自动导入的 BOM 表使用属性来控制其管理的依赖项的版本。 浏览 Spring Boot 参考中的“依赖项版本属性”部分,获取这些属性的完整列表。spring-boot-dependenciesSpring中文文档

若要自定义托管版本,请设置其相应的属性。 例如,要自定义由属性控制的 SLF4J 版本:slf4j.versionSpring中文文档

ext['slf4j.version'] = '1.7.20'
extra["slf4j.version"] = "1.7.20"
每个 Spring Boot 版本都是针对一组特定的第三方依赖项进行设计和测试的。 覆盖版本可能会导致兼容性问题,应谨慎使用。

孤立使用 Spring Boot 的依赖项管理

Spring Boot 的依赖项管理可以在项目中使用,而无需将 Spring Boot 的插件应用于该项目。 该类提供了一个常量,可用于导入物料清单,而无需知道其组 ID、工件 ID 或版本。SpringBootPluginBOM_COORDINATESSpring中文文档

首先,将项目配置为依赖于 Spring Boot 插件,但不要应用它:Spring中文文档

Spring Boot 插件对依赖管理插件的依赖性意味着您可以使用依赖项管理插件,而无需声明对它的依赖性。 这也意味着您将自动使用与 Spring Boot 相同的依赖项管理插件版本。Spring中文文档

应用依赖管理插件,然后将其配置为导入 Spring Boot 的 bom:Spring中文文档

apply plugin: 'io.spring.dependency-management'

dependencyManagement {
	imports {
		mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
	}
}
apply(plugin = "io.spring.dependency-management")

the<DependencyManagementExtension>().apply {
	imports {
		mavenBom(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)
	}
}

上面的 Kotlin 代码有点尴尬。 这是因为我们使用的是应用依赖管理插件的命令式方式。Spring中文文档

我们可以通过应用根父项目中的插件,或者像对 Spring Boot 插件所做的那样使用块来使代码不那么笨拙。 这种方法的缺点是它迫使我们指定依赖管理插件的版本:pluginsSpring中文文档

plugins {
	java
	id("org.springframework.boot") version "3.3.2-SNAPSHOT" apply false
	id("io.spring.dependency-management") version "1.1.5"
}

dependencyManagement {
	imports {
		mavenBom(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)
	}
}

了解更多

要了解有关依赖管理插件功能的更多信息,请参阅其文档Spring中文文档

每个 Spring Boot 版本都是针对一组特定的第三方依赖项进行设计和测试的。 覆盖版本可能会导致兼容性问题,应谨慎使用。

使用 Gradle 的 Bom 支持管理依赖项

Gradle 允许将 BOM 声明为 or 依赖项,从而使用 BOM 来管理项目的版本。 依赖项将 BOM 中的版本视为建议,依赖关系图中的其他版本和约束可能会导致使用 BOM 中声明的依赖项版本以外的版本。 依赖项将 BOM 中的版本视为需求,它们将覆盖在依赖项关系图中找到的任何其他版本。platformenforcedPlatformplatformenforcedPlatformSpring中文文档

该类提供了一个常量,可用于声明对 Spring Boot 的 bom 的依赖关系,而无需知道其组 ID、工件 ID 或版本,如以下示例所示:SpringBootPluginBOM_COORDINATESSpring中文文档

dependencies {
	implementation platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)
}
dependencies {
	implementation(platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES))
}

平台或强制实施的平台将仅限制已声明该平台的配置版本或从已声明该平台的配置扩展而来的配置版本。 因此,可能需要在多个配置中声明相同的依赖项。Spring中文文档

自定义托管版本

使用 Gradle 的 bom 支持时,您不能使用 from 的属性来控制它管理的依赖项的版本。 相反,您必须使用 Gradle 提供的机制之一。 其中一种机制是解决策略。 SLF4J 的模块都在组中,因此可以通过配置该组中的每个依赖项以使用特定版本来控制其版本,如以下示例所示:spring-boot-dependenciesorg.slf4jSpring中文文档

configurations.all {
	resolutionStrategy.eachDependency { DependencyResolveDetails details ->
		if (details.requested.group == 'org.slf4j') {
			details.useVersion '1.7.20'
		}
	}
}
configurations.all {
    resolutionStrategy.eachDependency {
        if (requested.group == "org.slf4j") {
            useVersion("1.7.20")
        }
    }
}
每个 Spring Boot 版本都是针对一组特定的第三方依赖项进行设计和测试的。 覆盖版本可能会导致兼容性问题,应谨慎使用。
每个 Spring Boot 版本都是针对一组特定的第三方依赖项进行设计和测试的。 覆盖版本可能会导致兼容性问题,应谨慎使用。