Appearance
BOM 物料清单
BOM(Bill of Materials,物料清单)是一种特殊的 POM 文件,用于集中管理一组相关依赖的版本号,避免版本冲突。
使用 BOM
kotlin
dependencies {
// 导入 BOM(使用 platform())
implementation(platform("org.springframework.boot:spring-boot-dependencies:3.2.0"))
// 使用 BOM 管理版本的依赖,无需写版本号
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-security")
runtimeOnly("com.mysql:mysql-connector-j")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}常用 BOM 清单
kotlin
dependencies {
// Spring Boot BOM
implementation(platform("org.springframework.boot:spring-boot-dependencies:3.2.0"))
// Spring Cloud BOM
implementation(platform("org.springframework.cloud:spring-cloud-dependencies:2023.0.0"))
// Jackson BOM
implementation(platform("com.fasterxml.jackson:jackson-bom:2.15.3"))
// JUnit 5 BOM
testImplementation(platform("org.junit:junit-bom:5.10.1"))
// Micronaut BOM
implementation(platform("io.micronaut.platform:micronaut-platform:4.2.0"))
// Quarkus BOM
implementation(enforcedPlatform("io.quarkus:quarkus-bom:3.6.0"))
}platform() vs enforcedPlatform()
kotlin
// platform():BOM 中的版本作为推荐版本,可被项目覆盖
implementation(platform("org.springframework.boot:spring-boot-dependencies:3.2.0"))
// enforcedPlatform():BOM 中的版本强制使用,不可覆盖
implementation(enforcedPlatform("org.springframework.boot:spring-boot-dependencies:3.2.0"))推荐使用 platform(),更灵活。
创建自定义 BOM
kotlin
// 自定义 BOM 项目的 build.gradle.kts
plugins {
`java-platform`
}
dependencies {
constraints {
api("com.google.guava:guava:32.0.1-jre")
api("org.slf4j:slf4j-api:2.0.9")
api("com.fasterxml.jackson.core:jackson-databind:2.15.3")
}
}在其他项目中使用:
kotlin
dependencies {
implementation(platform(project(":my-bom")))
implementation("com.google.guava:guava") // 版本由 BOM 管理
}查看 BOM 管理的版本
bash
./gradlew dependencies --configuration compileClasspath下一步
- 版本目录(Catalog) - 更现代的版本管理方式
- 依赖约束 - 使用约束管理版本