目录
简介
Gradle是一个项目管理工具,与之类似的还有Ant/Maven。它使用简洁的groovy语法编写脚本,build的速度比Maven快。
Gradle的安装及配置
1.方式1
- 下载后解压:下载地址为https://gradle.org/install/,这里下载的版本为7.4.1
- 配置环境变量
- 新建环境变量GRADLE_HOME,值为安装gradle后的根目录
- path中新增环境变量
%GRADLE_HOME%\bin
- 验证环境变量是否配置成功
// 在DOS窗口下输入
gradle -v
2.方式2使用Gradle Wrapper
- 每一个使用gradle作为项目管理工具的项目下的gradlew和gradlew.bat脚本使用的是wrapper目录下
gradle-wrapper.properties
文件中规定的Gradle版本。因为有Graddle Wrapper,因此可以不用预先安装配置Gradle. - gradle-wrapper.properties解释
distributionBase:下载的Gradle压缩包解压后存储的主目录
distributionPath:相对于distributionBase的解压后的Gradle压缩包的路径
zipStoreBase:存放zip压缩包的主目录
zipStorePath:同distributionPath,不同的是它存放的是压缩包
distributionUrl:Gradle发行版压缩包的下载地址
Gradle中的常用指令
- gradle clean:清空build目录
- gradle classes:编译业务代码和配置文件
- gradle test:编译测试代码,生成测试报告
- gradle build:构建项目
- gradle build -x test:跳过测试构建项目
Groovy语法基础
Groovy是一门面向对象的动态编程语言,也可以用作脚本语言。
1.运行Groovy语言编写的程序。
- 方式1:
- 进入地址安装Groovy SDK,这里安装的版本为apache-groovy-sdk-3.0.20,并且配置环境变量
- 新建GROOVY_HOME变量名,值为Groovy SDK安装后的根目录
- 在path中新增环境变量
%GROOVY_HOME%\bin
- 在DOS窗口中运行
groovy -v
进行测试环境变量是否配置成功。
- 启动Groovy SDK自带的编辑器:在DOS窗口下执行
groovyconsole
命令 - 编写Groovy程序,保存为test.groovy文件。在DOS窗口下切换到该文件所在的目录,执行
groovy test.groovy
命令编译运行。
- 进入地址安装Groovy SDK,这里安装的版本为apache-groovy-sdk-3.0.20,并且配置环境变量
- 方式2:IDEA中创建groovy项目
2.标识符
def
是Groovy用来定义变量、属性、方法等的关键字。变量的定义可以使用具体的数据类型,但是不建议。
// 定义一个字符串变量
def str = "HelloWorld";
// 定义一个方法:拼接两个字符串
def concat(String firstStr, String secondStr) {
def str = "$firstStr$secondStr"
}
def result = concat(str, "Hi")
println(result)
3.字符串
- 用单引号'
- 用双引号"
- 用三引号''',使用三引号括起来的字符串是模板字符串。模板字符串支持换行
def str1 = '$test'; //$test
def str2 = "$test";
def str3 = '''$test''';//$test
println(str1);
println(str2);
println(str3);
4.方法
- 方法调用时括号也可以省略
- return语句可以不写,会将方法执行过程中的最后一句代码作为返回值
- 支持参数的动态类型推导,因此参数的数据类型以及方法的返回值类型可以不指定,像python一样
- 方法默认是public修饰的,包括类、属性。
5.运算符
- 算数运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
6.逻辑控制
- 循环语句
- 分支语句
- 顺序语句
7.JavaBean
- Groovy会为每个类中没有可见性修饰符的字段生成getter/setter方法,访问这个字段其实是调用它的getter/setter方法
- 类中只要定义了getter、setter方法,即使不定义属性,也一样可以作为类的属性访问
- 对于没有定义的属性,如果只写了getter方法而没有定义setter方法,那么不可以修改该属性的值
class Student {
// 没有可见性修饰符修饰的字段
def name;
def getInfo() {
"$name"
}
}
def stu = new Student();
stu.name = "test" // 调用setName方法
println(stu.name)// 调用getName方法
println(stu.info) // test
8.集合
- List
def list = ['21','11','47','89'];
// 范围索引
println(list[-1..0]) // [89, 47, 11, 21],倒着打印
// 下标索引
println(list[-1]) // 89
- Map
// 定义一个空map
def map = [:];
println(map.size()) //0
map = [
"name":"xcer",
"age":23
]
println(map instanceof HashMap) //true
// map的取值
if (map.containsKey("name")) {
println(map['name'])
println(map.name)
println(map.get("name","default value")) //xcer
}
// map的遍历
for (element in map) {
print("key:${element.key},value:${element.value}")
}
println();
map.each{ k, v -> println "${k}:${v}" }
9.闭包
闭包是一个重要的数据类型,每一个闭包都是一个Closure对象。它是由大括号括起来的一段可执行代码,可以有参数,也可以有返回值。
- 闭包定义的语法规则
{[closureParameters ->] statements}
- 闭包的定义和执行示例
// 定义一个闭包,赋值给一个变量
def clo = {String str, int number -> println("str:${str},number:${number}")}
// 闭包的执行
clo("test",100)
clo.call("test",100)
- 闭包作为方法的参数
// 闭包作为方法的参数
def func(closure) {
def str = "test";
closure(str)
}
func({println(it)})
// 简写形式,省略书写()
func {
println(it)
}
// 闭包只有一个参数的时候,默认就是it
def listEach(closure) {
def list = ['21','11','47','89'];
list.each {
closure(it)
}
}
listEach {
println(it)
}
第一个Groovy脚本文件
- 新建build.gradle文件,内容如下:
task print{
println("HelloWorld")
}
- 在build.gradle文件所在目录下打开CMD窗口执行
gradle -q print
-q :输出QUIET级别及其之上的日志信息,只显示错误日志
-i :输出INFO级别及其之上的日志信息
-d :输出DEBUG级别及其之上的日志信息