【学习背景】
相信做过实际项目或者学过项目的小伙伴,都听说过依赖构建工具,目前项目中用得最多的两种构建依赖构建方式分别是
Maven
和Gradle
,至于哪种日出冲天,哪种日薄西山,这个说不准,我觉得现在实际上两种都使用得挺多的,只不过Maven出道得早一些,而Gradle是后起之秀,今天就来介绍一下这个后起之秀Gralde的使用,主要基于Spring Boot官方提供的gradle demo进行说明,将教你如何快速上手一个Gradle工程,并根据实际需要进行单模块
的配置以及多模块
的配置,甚至是定制化多模块
的配置方案,希望对你有所帮助,如果有疑问,记得在评论区留言~
进入正文~
学习目录
一、单模块
1.1 生成demo
直接通过SpringBoot官方快速创建一个demo工程 https://start.spring.io/
将demo工程导入IDEA或Eclipse等集成开发工具,得到的结构大致如下
demo
├─src
├─build.gradle
├─settings.gradle
1.2 gradle配置说明
关于Gradle依赖构建,我们主要关注build.gradle
、settings.gradle
这两个配置,配置说明如下:
settings.gradle
//Gradle工程名
rootProject.name = 'demo'
build.gradle
配置内容及说明:
//依赖的插件
plugins {
id 'org.springframework.boot' version '2.5.4'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
//组名(前缀包名)
group = 'com.example'
//工程版本号(这里去掉-SNAPSHOT)
version = '0.0.1'
//JDK版本
sourceCompatibility = '1.8'
//全局仓库
repositories {
//maven仓库中心
mavenCentral()
}
dependencies {
//依赖正式架包
implementation 'org.springframework.boot:spring-boot-starter'
//依赖测试架包(正式构建时不会加入到依赖中)
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
//Junit测试,Gradle 4.6及以上版本,加入该配置即自动支持
useJUnitPlatform()
}
1.3 构建demo
完成Gradle的build.gradle
、settings.gradle
两个配置之后,接下来开始进行构建生成架包
如果没配置Gradle配置的,可以先安装Gradle(下载地址https://gradle.org/releases/)并配置一下,配置为 File -> Settings -> Build, Execution, Deployment -> Build Tools - Gradle
展开右侧Gradle视图栏,进行构建得到demo-0.0.1-plain.jar
架包
二、传统多模块(多配置)
现在实际的很多工程,一般不只是单个工程单模块,很多都是需要配置多模块的,比较传统的方式是直接添加各个子模块,每一个子模块对应一个build.gradle配置,比较简单,但是配置可能会比较冗余,网上很少有说明怎么整合多模块的配置到一个build.gradle里面的教程,下一章会进行介绍并给出定制化的方案
2.1 添加子模块
直接基于上面Springboot生成的demo主工程,添加三个子模块
结构预览
demo
├─app_common
│ └─build.gradle
├─app_one
│ └─build.gradle
├─app_two
│ └─build.gradle
├─build.gradle
├─settings.gradle
这种多模块创建方式比较简单,直接选中根目录demo,右键选择 New -> Module…
选中Gradle -> Java -> Next
命名要添加的子模块名称、填写GroupId/ArtifactId/Version三要素 -> Finish:
同理,将app_one、app_two另外两个子模块也创建出来即可
最终得到的工程结构如下图所示:
每一个子模块下的build.gradle跟主模块的结构是一样的
例如app_common/build.gradle配置如下:
plugins {
id 'java'
}
group 'com.example'
version '0.0.1'
repositories {
mavenCentral(