前言:Spring體系中很多庫之間相互依賴,但是由於版本之間差異比較大,我們需要比較精確的知道每個庫的版本對應關係,不然很容易造成“庫”與“庫”之間對應不上,導致部分功能無效,甚至是異常情況。程序員排查起來一個頭兩個大,本篇文章將介紹如何利用gradle的插件來實現版本自動管理機制
1、依賴管理
- 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的版本大於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依賴清單的庫,版本號不可省略,需要手動設置版本
- 版本依賴管理是開發中基礎環節,使用版本管理有效減少版本依賴的校對,可以提高開發效率