用Gradle开始一个Spring Boot项目
环境
Windows10 64位系统
JDK 11版本
从 Spring Initializr 下载模板
首先,从下面的页面下载Spring项目的模板。
请像图片上那样,选中Gradle而不是Maven。
下载并解压后的目录将如下所示。
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2020/04/29 23:48 gradle
d----- 2020/04/29 23:48 src
-a---- 2020/04/29 23:48 341 .gitignore
-a---- 2020/04/29 23:48 509 build.gradle
-a---- 2020/04/29 23:48 5764 gradlew
-a---- 2020/04/29 23:48 3056 gradlew.bat
-a---- 2020/04/29 23:48 469 HELP.md
-a---- 2020/04/29 23:48 26 settings.gradle
Gradle 相关的目录和文件
该项目中包含以下与Gradle相关的文件和目录。
.gradle … Gradleが生成するキャッシュが保存されているディレクトリ
gradle … Gradleラッパーの設定ファイル / Jarファイルが配置されているディレクトリ
build.gradle … ビルドスクリプト、大体これを触ることになる
gradlew … Gradleラッパーのシェルスクリプト
gradlew.bat … Gradleラッパーのバッチファイル
settings.gradle … マルチプロジェクト時のビルドに必要な設定ファイル
Gradle包装器 (Grahye qì)
如果使用Spring Initializr,则项目中已经包含了Gradle Wrapper。
因此,开发者无需手动安装Gradle本身。
当使用Intellij等IDE打开下载的项目时,会自动安装指定版本的Gradle。
通过这种分发方式,可以统一团队使用的Gradle版本。
将IntelliJ集成
IntelliJ内置的Gradle插件已经默认安装,不需要添加IDE插件。
在屏幕右边有Gradle选项卡,可以在IntelliJ内完成对Gradle的操作。
下方显示了任务列表,可以通过大象图标按钮执行各个任务。
构建脚本
plugins {
id 'org.springframework.boot' version '2.2.6.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
插件 (chā
plugins {
id 'org.springframework.boot' version '2.2.6.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
查看 build.gradle,你可以看到插件已经从开始就被引入了。
Gradle 的插件是预先定义了常用开发任务的扩展。
例如,java 插件会提前准备好构建、测试、生成 Javadoc 等任务。
在下面的页面上,提供了各种插件供公开使用,当然也可以自己制作插件。
存储库
repositories {
mavenCentral()
}
Gradle会从外部和内部存储库获取库的依赖关系。
在上面的例子中,指定了mavenCentral,所以在添加依赖关系时会从这里获取。
除此之外,还有jCenter和Google存储库等,可以指定它们。
还可以设置存储库的优先级,如果A没有,可以从B获取。
还可以指定使用Nexus等自己搭建的私有存储库。
依存关系
默认情况下,如下所示。
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
在编译应用程序源代码时,implementation 是必需的依赖关系。testImplementation 则是为了编译和执行测试源代码所必需的依赖关系。还可以设置其他各种配置的依赖关系。通过在 build.gradle 中添加依赖关系,IntelliJ 可以检测到更改并从仓库获取依赖关系。
考試
test {
useJUnitPlatform()
}
最初的时候,状态如以上所示,执行测试会运行所有的测试。
在useJUnitPlatform块内,可以使用JUnit的功能来进行测试的详细控制。
例如,可以包含特定标记的测试方法,也可以排除某些测试方法。