使用Gradle生成BOM管理依賴版本


寫在前邊

自Gradle 5開始添加了Maven中 BOM 的支持。然而Gradle 6 以前,想使用BOM,需要使用 Maven 定義並發布 pom.xml 才可以。

好在 Gradle 6 開始,官方提供了一個名為 java-platform 插件,無需復雜配置,即可生成 BOM 並發布,本文就帶大家寫一個 demo 簡單應用此插件。

什么是 BOM?

BOM (The Bill of Materials in Maven) 是Maven中的概念,表現形式是一個 pom.xml 文件,使用 BOM 可以定義一系列依賴及版本。其它項目可以在使用 BOM 時,無需定義已在 BOM 中定義依賴的版本號,即可獲取版本號,可理解為統一依賴版本的用途。

當傳遞的版本號不合要求,可自行定義版本號,覆蓋 BOM 中的定義

BOM 由下圖結構組成,以下經過部分簡化:

可以看到 打包方式是 pom,包含了 dependencyManagement 塊,在 dependencyManagement 中又包含了一系列依賴及具體版本。

使用 Gradle 6 生成 BOM

這里用 IDEA 生成一個空的Gradle項目,結構如下:

1. 定義 build.gradle

plugins {
    id 'java-platform' // 引入 java-platform插件
    id 'maven-publish' // 發布插件,可用來發布 BOM 或 jar到本地與遠程倉庫
}

group 'online.hellxz'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

// 默認為防止用戶錯誤地引入依賴,而不是引入依賴約束,如果引入依賴會報錯失敗。
// 通過這個配置可以讓Gradle允許引入依賴,當然這是可選的
javaPlatform {
    allowDependencies()
}

dependencies {
    //在constraints塊中定義依賴版本約束
    constraints{
        api group: 'org.springframework.boot', name: 'spring-boot-starter', version: '2.4.2'
    }
}

publishing{
    publications{
        //以下maven並非關鍵字,可自定義
        maven(MavenPublication) {
            //通過java-platform生成BOM
            from components.javaPlatform
        }
    }
}

2. 定義setting.gradle

只有一行 rootProject.name = 'bom-demo1'

3. 生成 BOM 到本地倉庫

或 執行命令:

gradle -q publishToMavenLocal

4. 查看本地倉庫生成的 BOM

其他項目使用 BOM

build.gradle如下:

plugins {
    id 'java'
}

group 'online.hellxz'
version '1.0-SNAPSHOT'

repositories {
    mavenLocal() // 引本地倉庫
}

dependencies {
    // 依賴上文本地倉庫中的BOM
    implementation platform('online.hellxz:bom-demo1:1.0-SNAPSHOT')
    // 不帶依賴版本引包
    implementation 'org.springframework.boot:spring-boot-starter'
}

結果如圖:

參考

本文同步更新於本人CSDN


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM