前言:Spring 体系中很多库之间相互依赖,但是由于版本之间差异比较大,我们需要比较精确的知道每个库的版本对应关系,不然很容易造成“库”与“库”之间对应不上,导致部分功能无效,甚至是异常情况。程序员排查起来一个头两个大,本篇文章将介绍如何利用 gradle 的插件来实现版本自动管理机制
1、依赖管理
SpringBoot 构建系统文档
- 1、每个 SpringBoot 版本都提供了他能支持的依赖清单, 所以开发中我们不需要在配置文件中指定版本,SpringBoot 会自动帮我们管理这些依赖,当我们升级 SpringBoot 的时候,SpringBoot 所支持的依赖清单也会自动升级
- 2、我们在用 SpringBoot 管理依赖的时候,可以自定义版本号覆盖 SpringBoot 本身依赖的版本
- 3、springBoot 支持的依赖清单包括 Spring 所有模块以及 Springboot 依赖的第三方库
- 4、每个发布的 SpringBoot 版本都与一个基础版本的 SpringFramework 有关联,官方是不建议指定版本的
上述的官方文档关于依赖管理的描述,总结下来就是:
在 SpringBoot 开发中,如果使用了依赖管理,那么 Spring 所有模块和 SpringBoot 依赖的第三方库我们不需要指定版本号
关于 SpringBoot 依赖的第三库在上述链接文档的这个部分(点击 POM 即可查看):
⚠️:此处提供 SpringBoot 2.1.6 依赖的三方库,其他版本自行找到指定版本的文档查看
2、gradle 自动依赖
本文重点讲解 gradle 如何配置自动依赖,关于 maven 配置 点击这里查看
gradle 配置点击这里
文档中描述:如果你想使用依赖关系管理,那么你需要保证你的 gradle 的版本大于 4.4
我们通过实战方式,针对 gradle 配置自动依赖管理进行说明。
3、实战
build.gradle 配置
方式一:将 SpringBoot 插件应用于项目,依赖的插件将依赖清单加载到项目中,详细见配置中描述(建议直接使用此配置)
plugins {
//id 'java'
//springboot 插件,加入版本,那么 Spring 相关依赖,则自动加入(当使用其他插件的时候,还会自动加载插件所带的任务)
id 'org.springframework.boot' version '2.1.6.RELEASE'
// 第一种引入方式:写在此处,需要手动设置依赖管理的版本,否则无法执行(手动指定版本,好处是插件集中管理在 plugins 里面)// id 'io.spring.dependency-management' version '1.0.8.RELEASE'
}
apply plugin: 'java'
// 第二种引入方式:应用依赖管理插件,自动给插件追加版本号(建议使用此配置)apply plugin: 'io.spring.dependency-management'
sourceCompatibility = 1.8
repositories {mavenLocal()
maven{url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
// 设置 commons-pool2 版本为 '2.6.1',Spring 依赖的是 2.6.2
ext['commons-pool2.version'] = '2.6.1'
dependencies {
//Spring 模块
compile("org.springframework.boot:spring-boot-starter-web")
//Spring 依赖的第三方模块(2.1.6 依赖的是 3.8.1)
compile("org.apache.commons:commons-lang3")
//Spring 依赖的第三方模块 (2.1.6 依赖的是 2.6.2) 指定依赖版本为 2.6.1
compile('org.apache.commons:commons-pool2')
// 未被依赖的库需要手动:我司开源的 轻代码开发框架核心包,文末源码链接
compile('com.diboot:diboot-core:2.0.0')
}
方式二:如果你仅仅是为了要依赖管理,而不需要插件的功能,你可以使用 SpringBootPlugin 提供的 BOM_COORDINATES 来进行依赖管理控制也可以达到效果
plugins {
// 依赖 springboot 插件,但是不应用
id 'org.springframework.boot' version '2.1.6.RELEASE' apply false
}
apply plugin: 'java'
apply plugin: 'io.spring.dependency-management'
// 使用 SpringBootPlugin 提供的依赖插件
dependencyManagement {
imports {mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES}
}
sourceCompatibility = 1.8
repositories {mavenLocal()
maven{url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
// 设置 commons-pool2 版本为 '2.6.1',Spring 依赖的是 2.6.2
ext['commons-pool2.version'] = '2.6.1'
dependencies {
//Spring 模块
compile("org.springframework.boot:spring-boot-starter-web")
//Spring 依赖的第三方模块(2.1.6 依赖的是 3.8.1)
compile("org.apache.commons:commons-lang3")
//Spring 依赖的第三方模块 (2.1.6 依赖的是 2.6.2) 指定依赖版本为 2.6.1
compile('org.apache.commons:commons-pool2')
// 未被依赖的库需要手动:我司开源的 轻代码开发框架核心包,文末源码链接
compile('com.diboot:diboot-core:2.0.0')
}
4、总结
- Spring 相关模块,以及 SpringBoot 依赖的库可以通过依赖管理,自动获取最适合的库版本
- 未加入 SpringBoot 依赖清单的库,版本号不可省略,需要手动设置版本
- 版本依赖管理是开发中基础环节,使用版本管理有效减少版本依赖的校对,可以提高开发效率
diboot 简单高效的轻代码开发框架