無論你熟悉不熟悉Gradle,build.gradle文件中的內容都是要去從新認識的。html
上圖是一個典型的,剛剛生成的build.gradle文件,添加了個Guava依賴。repositories{ mavenCentral() }
這段代碼表示咱們的依賴都是從中央倉庫下載的。 好比這個Guava庫,implementation後面跟上庫的座標就能夠引入 ,以前咱們說過,座標由 groupId:artifactId:version
組成。奇怪的是,上面列出的第一個依賴,卻沒有版本號。由於這個版本號是由一個插件管着的,插件叫作 io.spring.dependency-management。java
說到這兒,又要牽扯出不少東西了,容我深吸一口氣。git
Spring Boot的特色就是簡化了依賴,一旦引入,就能夠按照默認的方式配置好。這個時候,Spring Boot引入了「Starter」的概念,一個Starter其實能夠表明一個功能,引入一個Stater,就表示引入了某個功能,實現這個功能所須要的依賴,都會被引入而且配置好。比方說圖中,咱們引入了Web Starter(Artifact ID是spring-boot-starter-web),它提供了web開發的功能,web開發功能須要不少依賴來完成,如圖:github
能夠看出,Web Stater使用了Spring MVC來處理請求,用Jackson作JSON處理,用Tomcat做爲內置服務器,你搞Web開發確定離不開這些東西吧,Web Starter直接給你弄好了。只須要添加一行Web Starter的依賴就行。相似的Starter還有幾十個。Starter能夠是官方實現的,也能夠是開源庫本身實現的,也能夠團隊裏成員本身開發的。web
官方維護了一個列表,裏面列出了能夠省略版本號的依賴,包括官方實現的Starter和一些經常使用的第三方庫。對於每個Spring Boot版本,都有這樣一個列表。比方說你把Spring Boot的版本從2.1.4升級到2.1.5,那麼列表中的依賴會跟着變。spring
若是你對於這種自動維護的版本號,感受內心不踏實,仍是有辦法改的:服務器
對於Spring Boot 2.1.5來講,Web Starter自帶了Jackson,版本是2.9.8。若是你這時候想使用2.9.9的某個特性,經過上圖的代碼就能夠作到。app
注意,每一個Spring Boot版本,都針對其列表裏的第三方庫有過測試,改了版本號有可能不兼容。版本能夠改,使用要謹慎。maven
除了上面提到的 io.spring.dependency-management,build.gradle中還引入了java插件和org.springframework.boot插件,前者是用來搞純java開發的,後者是用來執行Spring Boot相關任務的,咱們熟悉的bootRun和bootJar任務都是從這個插件來的。ide
都是插件,引入的方式居然還不一樣,java和org.springframework.boot是經過 plugins{ id ...}
的形式引入的,io.spring.dependency-management倒是經過 apply plugin: ...
的方式引入。前者更新一點,後者更老更靈活一點,兩種形式的差異能夠在Gradle文檔中找到。反正我是沒搞明白爲何生成的build.gradle要這樣寫。有懂行的能夠留個言給你們解個惑。
implementation '...'
,可能還有其餘區別。