当已经使用id“ org.springframework.boot”插件时,我们是否需要“ io.spring.dependency-management” gradle插件

时间:2019-08-29 20:00:50

标签: java spring-boot gradle

将spring-boot插件添加到Gradle项目中会发生什么?为什么我们还需要显式包含spring.dependency-management插件??

plugins {
    id "org.springframework.boot" version "2.1.5.RELEASE"
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
}

3 个答案:

答案 0 :(得分:4)

由于Gradle提供了5个以上的supports BOM文件,因此您不再需要依赖项管理插件。仍然需要spring boot插件来提供诸如bootJarbootRun之类的任务。这是一个应该起作用的最小build.gradle:

buildscript {
    ext {
        springBootVersion = '2.2.4.RELEASE'
    }
}

repositories {
    mavenCentral()
}

plugins {
    id 'java'
    id 'org.springframework.boot' version "${springBootVersion}"
}

dependencies {
    implementation platform("org.springframework.boot:spring-boot-dependencies:${springBootVersion}")
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.springframework.boot:spring-boot-starter-webflux'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
}

答案 1 :(得分:1)

迁移指南对此提供了一些提示:

  

Spring Boot的Gradle插件不再自动应用依赖项管理插件。相反,Spring Boot的插件现在可以通过导入正确版本的spring-boot-dependencies BOM对所应用的依赖管理插件做出反应。这使您可以更好地控制如何以及何时配置依赖项管理。

     

对于大多数应用程序,只需应用依赖管理插件即可:

apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management' // <-- add this to your build.gradle
     

注意:   依赖性管理插件仍然是spring-boot-gradle-plugin的可传递依赖性,因此不需要在您的buildscript配置中将其列为类路径依赖性。

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide#dependency-management

答案 2 :(得分:0)

为什么使用Spring Boot Gradle插件

释义Spring Boot Gradle Plugin Reference Guide

Spring Boot Gradle插件在Gradle中提供了Spring Boot支持。它允许您打包可执行的jar或war归档文件,运行Spring Boot应用程序,并使用spring-boot-dependencies提供的依赖管理。

要注意的关键点是,除了提供Spring Boot支持之外,它还可以通过spring-boot-dependencies使用依赖项管理。但是...

为什么要使用Spring Dependency Management插件

spring-boot-dependencies BOM支持依赖管理。

意思是:

  1. 如果您省略了用于声明的依赖项的版本,则:
  2. 这是一个托管依赖项(即在BOM表中列出的版本):
  3. 之后(前提是您应用了spring-boot-dependencies插件),您将可以像在Maven中一样享受依赖性管理

要在项目中获取依赖项Bom,必须将依赖项管理插件与Spring boot gradle插件配合使用。再次解释

应用io.spring.dependency-management插件时,Spring Boot的插件将自动导入spring-boot-dependencies 来自您所使用的Spring Boot版本的bom。

为什么一个还是另一个?

如果需要Spring Boot支持,则需要该插件。

此外,如果要管理依赖项(如上所述),则需要依赖项管理插件。

具有依赖项约束的另一种方式

依赖性管理插件是导入Spring Boot物料清单(BOM)的一种方法。

另一种方法(受Gradle 5及更高版本支持)是从BOM表中导入建议的依赖项版本,作为Gradle中的依赖项约束。 “平台”(依赖项处理程序方法)用于导入BOM。

dependencies {
    // Load BOM for Spring Boot.
    implementation(platform("org.springframework.boot:spring-boot-dependencies:2.3.0.RELEASE"))
}

使用任何一种依赖项管理方式,您都可以在没有显式版本的情况下指定依赖项,如下所示:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
}