簡體   English   中英

隱式導入的Maven BOM文件在Gradle中占主導地位嗎?

[英]Are implicitly imported Maven BOM files dominant in Gradle?

我開發了一個Spring Boot 2.0.x應用程序,該應用程序使用Gradle 5.2.1導入了多個Maven BOM表,包括自定義和正式的Spring BOM表。 因此,我使用Gradle提供的platform語法。 但是,我也將dependency-management插件與Spring Boot Gradle插件結合使用。

apply plugin: 'io.spring.dependency-management'
apply plugin: 'org.springframework.boot'

dependencies {
    compile platform("org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}")
    compile platform("com.myOrg:custom-bom:${latestVersion}")
}

根據文檔 ,插件的這種組合觸發了Spring Boot BOM文件的包含。 但是,我不知道此隱式包含的BOM如何適合BOM的常規順序。 是首先應用它,然后可以被其他BOM覆蓋,還是最后應用,從而主導了所有其他BOM文件?

在僅用於BOM的platform使用情況的Gradle世界中,沒有優先級規則。 Gradle將考慮由不同物料清單和可傳遞依賴項帶來的所有約束,如果他們建議使用不同版本,則沖突將以通常的方式解決。

我不是Spring dependency-management插件的專家,但我的理解是,它旨在復制Maven BOM合同:BOM的版本會覆蓋所有可傳遞版本,並且可以被本地版本聲明所覆蓋。

如果正確理解,那么dependency-management插件將對其導入的BOM所涵蓋的所有依賴項應用其規則。 插件未涵蓋的所有內容均應遵守Gradle規則。

從這個意義上講,這種混合可能不是理想的情況,因為在任一方向上,BOM內容在版本上的變化都可能對解決的依賴關系產生嚴重影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM