无论你熟悉不熟悉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 '...'
,可能还有其余区别。