繁体   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