使用gradle管理spring-boot项目
在前段时间,spring的源码从maven转换到了gradle。同为构建工具,为什么spring要用的gradle而放弃maven呢?
gradle与maven的不同点
- gradle是一个使用基于Groovy的DSL(领域特定语言)的构建自动化系统。
- maven是一个软件项目管理系统,主要用于Java项目。
- gradle 不使用XML文件来声明项目配置。
- maven使用XML文件来声明项目,其依赖项,构建顺序及其必需的插件。
- gradle基于完成工作的任务依赖关系图。
- maven基于固定模型和线性模型的阶段。
- 在Gradle中,主要目标是为项目添加功能。
- 在Maven中,主要目标与项目阶段有关。
- gradle通过跟踪输入和输出任务来避免工作,并且仅运行已更改的任务。因此,它提供了更快的性能。
- maven不使用构建缓存。因此,它的构建时间比Gradle慢。
- Gradle是高度可定制的;它提供了广泛的IDE支持自定义版本。
- Maven的参数和要求数量有限,因此自定义有点复杂。
- Gradle避免了Java的编译。
- 在Maven中,编译是必需的。
还有很多不同的地方,我只总结了以上几点。
使用gradle创建spring-boot项目
既然spring的源码转换为了gradle,为了和spring编译工具一致,现在开始使用gradle进行spring-boot项目的管理。
创建文件夹
在指定的文件夹下面创建文件夹,如我在D盘:
D:/> mkdir spring-boot-study-gradle
进入文件夹
D:/> cd spring-boot-study-gradle
##创建gradle项目 初始化
D:/spring-boot-study-gradle> gradle init
##选择生成的类型,直接回车就好了
Select type of project to generate:
1: basic
2: application
3: library
4: Gradle plugin
Enter selection (default: basic) [1..4]
##选择先关的脚本语言,直接回车就好了
Select build script DSL:
1: Groovy
2: Kotlin
Enter selection (default: Groovy) [1..2]
##选择项目的名称,默认就是文件夹名,可以根据自己需求自己写
Project name (default: test):
##构建成功
> Task :init
Get more help with your project: https://guides.gradle.org/creating-new-gradle-builds
BUILD SUCCESSFUL in 2m 5s
2 actionable tasks: 2 executed
spring-boot-study-gradle
因为这个项目是主项目,以后相关的spring-boot学习的项目都在这个目录下面。我们在当前目录下创建一个子项目的文件夹:
D:/spring-boot-study-gradle> mkdir spring-boot-study-gradle-demo1
##在spring-boot-study-gradle-demo1创建一个build.gradle(gradle构建文件),setting.gradle(gradle设置文件)
D:/spring-boot-study-gradle/spring-boot-study-gradle-demo1>type nul>build.gradle
D:/spring-boot-study-gradle/spring-boot-study-gradle-demo1>type nul>settings.gradle
#将相关内容写入build.gradle和setting.gradle(建议用相关idea编辑,我本地使用的vsCode)
D:/spring-boot-study-gradle/spring-boot-study-gradle-demo1>echo "mainClassName = 'org.tony.springboot.demo1.Main'" > build.gradle
##mainClassName 指定启动类
D:/spring-boot-study-gradle/spring-boot-study-gradle-demo1>echo 'rootProject.name = "spring-boot-study-gradle-demo1"' > settings.gradle
##rootProject.name指定项目的名称
之后就可以在vsCode中去创建相关的java文件等操作。
因为spring-boot-study-gradle是父工程,我们需要修改spring-boot-study-gradle的build.gradle和settings.gradle.
- build.gradle
//指定所有项目的maven地址
allprojects{
repositories {
maven {url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
}
//指定子项目的版本
subprojects{
version="1.0"
}
//相关spring-boot-study-gradle-demo1的配置
project("spring-boot-study-gradle-demo1"){
//申请相关的插件
apply plugin:'java-library'
apply plugin: 'application'
//添加相应的依赖
dependencies{
compile('org.springframework.boot:spring-boot-starter-web:2.3.1.RELEASE')
testCompile('junit:junit:4.13')
}
}
- settings.gradle
rootProject.name = 'spring-boot-cloud-study-gradle'
//导入spring-boot-study-gradle-demo1子项目,将子项目和父项目关联
include "spring-boot-study-gradle-demo1"
目录结构如图
之后就可以进行相关的代码开发了。