如何在 Gradle 中为 Spring 使用 Maven BOM?

Ray*_*y S 7 gradle maven spring-boot

我正在将 POM 转换为 Gradle,我遇到的一件事是在 Gradle 中进行依赖管理,就像我在 POM 中所拥有的那样:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Edgware.SR4</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)

Edgware.SR4在 Gradle 中也有办法吗?

我检查了https://docs.gradle.org/4.6/release-notes.html#bom-import但这并没有真正告诉我如何利用Edgware.SR4BOM。


更新

我终于有我的 build.gradle 如下似乎工作:

plugins{
   id 'org.springframework.boot' version '1.5.8.RELEASE'
}

apply plugin: 'io.spring.dependency-management'
dependencyManagement {
    imports {
       mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Edgware.SR4'
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,但想知道这种方法是否有任何缺陷。https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/html/提供的文档建议使用apply false开始

id 'org.springframework.boot' version '1.5.8.RELEASE'
Run Code Online (Sandbox Code Playgroud)

我没有这样做,而且效果很好。想知道为什么这样建议。

小智 9

截至今天,最新版本的 gradle 都有一个内置的解决方案。

dependencies {
    implementation(platform("org.springframework.cloud:spring-cloud-dependencies:Edgware.SR4"))
}
Run Code Online (Sandbox Code Playgroud)

  • 那不是我的问题。@Spliterash我显然知道有一个区别,问题是通过提供的代码添加什么作为依赖项,因为问题显然表明它需要 BOM 而不是 POM。提供的示例链接是一个 POM 对象。 (2认同)

And*_*son 5

假设您使用的是 Spring Boot,因此已经应用了依赖管理插件,您可以通过将以下内容添加到build.gradle文件中来导入 Spring Cloud 的 bom:

dependencyManagement {
    imports {
        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Edgware.SR4'
    }
}
Run Code Online (Sandbox Code Playgroud)