当前位置: 首页 > 知识库问答 >
问题:

隐式导入的Maven BOM文件在Gradle中占主导地位吗?

和和煦
2023-03-14

我开发了一个Spring Boot2.0.x应用程序,该应用程序使用Gradle5.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文件?

共有1个答案

彭鹭洋
2023-03-14

在一个只有platform用于BOM的分级世界中,没有优先规则。Gradle将考虑不同BOM和可传递依赖带来的所有约束,如果他们推荐不同的版本,冲突将以通常的方式解决这些约束。

我不是Springdependency-management插件的专家,但我的理解是,它旨在复制Maven BOM契约:BOM的版本会否决任何可传递版本,并且可以反过来被本地版本声明否决。

如果这种理解是正确的,那么dependency-management插件将对它导入的BOM覆盖的所有依赖项应用它的规则。任何不包括在插件将遵守梯度规则。

从这个意义上说,这种混合可能不是一种理想的情况,因为BOM内容在任何一个方向上对版本的更改都可能对已解决的依赖关系产生相当严重的影响。

 类似资料:
  • 请帮忙,我有两个与Kotlin DSL Gradle一起的spring boot项目,但是,我需要将其中一个导入到另一个,但是,它不起作用。这是我尝试过的: 将外部jar(lib/*.jar)添加到IntelliJ IDEA项目的正确方法 如何将本地. jar文件依赖项添加到build.gradle.kt文件? 在谷歌上搜索前两篇文章有很多不同的地方,我也试过了,但都不管用。此外,我尝试导入生成的

  • 我正在尝试使用以下命令为android构建一个ionic 4项目: bulid失败,出现以下错误: 运行命令:/path/gradlew cdvBuildDebug-b/path/build。格拉德尔 失败:生成失败,出现异常。 出错原因: 配置根项目“android”时出现问题 当我做我得到了404。当我将url粘贴到浏览器的地址栏时,文件确实会被下载。所以,我可以下载gradle下载时遇到的问

  • 问题内容: 我正在导入许多不同的脚本,因此在文件的顶部,它会被导入语句弄得乱七八糟,即: 有没有办法将所有这些都移动到其他地方,然后我要做的就是导入该文件,所以它只是一个干净的导入? 问题答案: 当然有;只需在主文件所在的目录中创建一个名为的文件,然后将导入文件放置在该目录中即可。然后,您可以简单地在主脚本中使用。

  • 我目前正在通过webpack/babel在React应用程序中使用ES6。我使用索引文件收集模块的所有组件并将其导出。不幸的是,这看起来是这样的: 所以我可以很好地从其他地方导入它,比如: 显然,这不是一个很好的解决方案,所以我想知道,是否还有其他方法。我似乎无法直接导出导入的组件。

  • 我正在尝试编辑kotlin类上的版权位置,以便在导入之前,该选项是java类的,但我在kotlin中找不到

  • 问题内容: 我有一个如下文件: 我正在尝试将其导入文件。为此,我将其添加到类型定义中: 我正在这样导入。 在文件中,我将颜色用作。但是我得到一个错误: 属性’primaryMain’在类型’typeof“ * .json”上不存在 问题答案: 导入表单和模块声明需要就模块的形状,导出的内容达成一致。 编写时(自TypeScript 2.9导入JSON时,针对兼容模块格式的一种次佳实践, 请参见no