我开发了一个SpringBoot2.0.x应用程序,它使用Gradle 5.2.1导入多个Maven BOMs,包括定制的和官方的Spring。因此,我使用Gradle提供的platform语法。但是,我也使用dependency-management插件和Spring插件相结合。
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文件的包含。然而,我不知道这是如何含蓄地包括BOM符合BOM的常规秩序。它是首先应用,因而可以被其他BOM覆盖,还是最后应用,从而主导所有其他BOM文件?
发布于 2019-03-21 14:40:07
在一个只有platform使用BOM的分级世界中,没有优先规则。Gradle将考虑由不同的BOM和传递依赖带来的所有约束,如果它们推荐不同的版本,则以通常的方式解决它们。
我不是Spring dependency-management插件的专家,但我的理解是,它的目标是复制Maven BOM合同: BOM的版本可以否决任何可传递的版本,反过来也可以被本地版本声明所推翻。
如果这种理解是正确的,那么dependency-management插件将对它导入的所有依赖项应用它的规则。任何未被插件覆盖的内容都将遵守分级规则。
从这个意义上说,混合可能不是一个理想的情况,因为BOM内容在任何一个方向上的变化都可能对已解决的依赖产生相当严重的影响。
https://stackoverflow.com/questions/55277189
复制相似问题