Skip to content

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

下一步