关注我,这里有你意想不到的惊喜
Gradle从0入门到实战系列【一】Hello World Gradle
Gradle从0入门到实战系列【二】Groovy And Gradle
Gradle从0入门到实战系列【三】build.gradle之Project
Gradle从0入门到实战系列【四】build.gradle之Task
Gradle从0入门到实战系列【五】工程化之插件
Gradle从0入门到实战系列【六】生命周期剖析
Gradle从0入门到实战系列【七】一个简单完整的build.gradle
Gradle从0入门到实战系列【八】SpringBoot集成Junit单元测试
Gradle从0入门到实战系列【九】仓库与私服
Gradle从0入门到实战系列【十】集成Dockerfile构建Docker镜像
认识Gradle
Gradle是一种开源自动化构建工具,支持多语言环境,受Ant、Maven思想的影响,集二者之大成,相比Ant的不规范,Maven的配置复杂、生命周期限制较多,Gradle既规范也更灵活,可以使用DSL(领域特定语言,如Groovy)编写构建,脚本更加精悍。本系列基于Gradle7
讲解。
- Ant:2000年发布,纯java编写,几乎很少使用纯Ant进行项目的管理和构建。
- Maven:2004年发布,采用pom.xml管理项目,目前最火热的Java项目管理工具。
- Gradle:2012年发布,google背书、Android项目开发主流构建工具,Spring项目源码采用该工具构建。
我们为什么要学Gradle?他有哪些优势
优势:
- 灵活性:相对于 Maven、Ant 等构建工具,Gradle 提供了一系列的 API 让我们有能力去修改或定制项目的构建过程。
- 粒度性:源码的编译,资源的编译,都是一个一个Task的,我们可以修改task来达到精细控制上。
- 扩展性:Gradle 支持插件机制,所以我们可以复用这些插件,就如同复用库一样简单方便。
- 兼容性:Gradle 不仅自身功能强大,而且它还能兼容所有的Maven、Ant功能,也就是说,Gradle 吸取了所有构建工具的长处。
- 众多大厂开源代码开始由Maven转向了Gradle管理,这已经是趋势
劣势:
- 每一个版本都较上一次有非常大的改动,没有做较好向上兼容
- 学习成本高,需要学习groovy脚本语言
- 经常遇到一些莫名其妙的问题,会有一些踩坑成本
项目管理专业术语
- 构建(build):Gradle和Maven一样,提供了构建相关的Task,而构建是一种抽象概念,我们能执行的如install、build、clean、package等都称为构建,现阶段你可以通俗理解构建就是打包。
- 仓库(repository):存放jar包的仓库,我们常使用到的第三方jar包,如spring-aop-5.3.jar、hibernate-3.x.jar、mybatis-3.5.jar都存放在中央仓库中,仓库的详细知识在后面的文章中会给大家详细讲解。
坐标(GAV):我们曾学过x坐标、y坐标以及生活中的经纬度,他们都是用来定位的,所以在Gradle和Maven中也需要有坐标的概念,用来拉取中央仓库中的某一个具体的jar包。
- groupId:组织或机构的域名倒写,如com.taobao、org.springframework
- artifactId:第三方jar包名称
- version:版本号
示例Maven
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>5.3.8</version> </dependency>
示例Gradle
dependencies { implementation 'org.springframework:spring-aop:5.3.23' }
Gradle组成
Groovy
Groovy 是一种基于 JVM 的动态语言,他的语法和 Java 相似,最终也是要编译 .class 在JVM上运行。Groovy 完全兼容 Java 并且在此基础上添加了很多动态类型和灵活的特性,比如支持闭包,支持DSL(领域特定语言),是一门非常灵活的动态脚本语言。
要执行Groovy的脚本必须要安装Groovy环境,或者使用Java的ClassLoader来调用,大家初次学习Groovy不需要安装环境,可以寻找在线的云编译环境运行。第二篇文章会进行详细的语法讲解。
build script block
构建脚本快由Groovy语法组成,是由Gradle内置+插件提供的一些闭包,后面内容会详细给大家剖析
- buildscript{}
- configurations{}
- repositories{}
- dependencies{}
- allprojects{}
- subprojects{}
- sourceSets{}
- artifacts{}
- publishing{}
gradle api
- 内置属性:如project、version、group、parent
- 内置方法:property、copy、apply、afterEvaluate等
安装Gradle
因为gradle不同版本兼容性较差,在实际工作中,我们一般不会直接下载安装,而是采用idea+wrapper的形式来进行编译和使用,这里学习使用安装一次。
- 环境:windows、java8,戳我Gradle官网进行下载,下载后解压到本地
- binary-only版本(-bin后缀):只有可执行文件
- complete版本(-all后缀):除了可执行文件还包含Gradle的源码和源码文档说明
下载后解压,配置环境变量
- 新建GRADLE_HOME环境变量,将gradle根目录配置
- 在path中加入项
%GRADLE_HOME%\bin
,类似于JDK或Maven的配置 - 打开CMD,执行
gradle -v
,成功输出版本则表示安装配置完成
Mac
平台下推荐使用Homebrew包管理器自动安装,输入brew install gradle
默认会下载binary-only
版本
C:\Users\Ron>gradle -v
Welcome to Gradle 7.4.1!
------------------------------------------------------------
Gradle 7.4.1
------------------------------------------------------------
Build time: 2022-03-09 15:04:47 UTC
Revision: 36dc52588e09b4b72f2010bc07599e0ee0434e2e
Kotlin: 1.5.31
Groovy: 3.0.9
Ant: Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM: 1.8.0_131 (Oracle Corporation 25.131-b11)
OS: Windows 10 10.0 amd64
用Gradle说Hello World
- 新建
build.gradle
文件(名字不能为其他否则无法执行) 在其内部输入
task say{ println "hello world" }
- 在cmd环境下执行
gradle -q say
回车查看结果 参数解析
-q :输出QUIET级别及其之上的日志信息,只显示错误日志 -i :输出INFO级别及其之上的日志信息 -d :输出DEBUG级别及其之上的日志信息
每一个task都是org.gradle.api.DefaultTask
类型,在构建脚本中我们可以直接使用属性名使用该类中的相关属性,在底层Groovy
会为你调用相关的getter
和setter
方法去访问这些属性,这里我们简单使用doFirst
或doLast
方法试试,后续会对task做详细的讲解。
task say{
println "hello world"
doFirst{
println "ready"
}
doLast{
println "thanks"
}
}
总结
本篇就到这里了,带大家认识和学习了gradle的基础,用好gradle的前提是我们需要掌握Groovy基础语法,下一篇我们来学习Groovy,有疑问可以在评论区留言讨论