lesson 3 Gradle和SpringBoot
现在很流行微服务,而作为java程序员,几乎都必须使用spring boot框架来开发,下面和大家一起学习,spring boot中的gradle使用,从实际行动来理解Gradle的构建过程。
熟悉spring boot的朋友一定知道,基础项目可以通过各种各样的工具来创建,我使用了IDEA中的spring initializr创建出一个项目,创建时注意选项,Type:Gradle Project
不要选成Maven了,然后根据提示,一路点下去,项目就OK了。
友情提示:本文意在讲解gradle,所以只需要创建一个最基本的web项目即可。
.
├── build.gradle
├── settings.gradle
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── demo
│ │ └── gradle
│ │ └── DemoGradleApplication.java
│ └── resources
│ ├── application.properties
│ ├── static
│ └── templates
└── test
└── java
└── com
└── example
└── demo
└── gradle
└── DemoGradleApplicationTests.java
项目结构如上所示。
下面来看一下gradle文件里的内容。
settings.gradle依旧只有一行,表示项目名称
rootProject.name = 'demo-gradle'
build.gradle多了很多内容
buildscript { //buildScript表示本脚本中,需要依赖仓库,插件,jar包等资源,类似于maven中pluginsManagement的作用
ext { //ext则表示自定义的参数
springBootVersion = '2.1.1.RELEASE'
}
repositories { //仓库,不多说
mavenCentral()
}
dependencies { //依赖的具体内容
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
//以上内容,去除buildScript这一层,放到外面其实也是可以执行的
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
//这里以上的内容不多说
dependencies {
//依赖了spring boot中的两个资源,但都是都没有写版本号,这是因为上面io.spring.dependency-management这个插件的支持
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
这样,项目就可以基本的编译,打包,运行了。
gradle因为版本之间的差异,有一些写法可能不一样,比如apply plugin: 'java'
这其实是老版本的写法,新的替代写法是plugins{ id 'java' version 'xx'}
版本号和dependency中一样,是可以省略的。
在我看到的资料中,似乎apply plugin:‘xxx’
这种写法好像不能在此处指定版本号,需要使用buildScript中引入,去控制,但是新写法可以按插件名和版本号直接引入项目,所以相比之下,脚本代码量会变小,也更以读一些。
下面是我对这个build.gradle的改变,项目仍可以正常使用。
//插件引入的方式更简单粗暴
plugins {
id 'java'
id 'idea'
id "org.springframework.boot" version "2.1.1.RELEASE"
id "io.spring.dependency-management" version "1.0.6.RELEASE"
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
//配置了aliyun的仓库,加速下载过程
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
}
//还是那两个依赖
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
这么一看,我修改过得配置确实少了代码,也更容易看懂,相信通过这些大家应该对这个脚本的构建过程有了一些理解。
从IDE创建的gradle脚本,到自己修改它的一些写法使他更简单易读,麻烦小伙伴们也一起动起手吧,对技术而言,熟练也是一种不可多得的技术。