简介

Gradle是一个项目管理工具,与之类似的还有Ant/Maven。它使用简洁的groovy语法编写脚本,build的速度比Maven快。

Gradle的安装及配置

1.方式1
  1. 下载后解压:下载地址为https://gradle.org/install/,这里下载的版本为7.4.1
  2. 配置环境变量
    1. 新建环境变量GRADLE_HOME,值为安装gradle后的根目录
    2. path中新增环境变量%GRADLE_HOME%\bin
  3. 验证环境变量是否配置成功
// 在DOS窗口下输入
gradle -v
2.方式2使用Gradle Wrapper
  1. 每一个使用gradle作为项目管理工具的项目下的gradlew和gradlew.bat脚本使用的是wrapper目录下gradle-wrapper.properties文件中规定的Gradle版本。因为有Graddle Wrapper,因此可以不用预先安装配置Gradle.
  2. gradle-wrapper.properties解释
distributionBase:下载的Gradle压缩包解压后存储的主目录
distributionPath:相对于distributionBase的解压后的Gradle压缩包的路径
zipStoreBase:存放zip压缩包的主目录
zipStorePath:同distributionPath,不同的是它存放的是压缩包
distributionUrl:Gradle发行版压缩包的下载地址

Gradle中的常用指令

  1. gradle clean:清空build目录
  2. gradle classes:编译业务代码和配置文件
  3. gradle test:编译测试代码,生成测试报告
  4. gradle build:构建项目
  5. gradle build -x test:跳过测试构建项目

Groovy语法基础

Groovy是一门面向对象的动态编程语言,也可以用作脚本语言。

1.运行Groovy语言编写的程序。
  1. 方式1:
    1. 进入地址安装Groovy SDK,这里安装的版本为apache-groovy-sdk-3.0.20,并且配置环境变量
      1. 新建GROOVY_HOME变量名,值为Groovy SDK安装后的根目录
      2. 在path中新增环境变量%GROOVY_HOME%\bin
      3. 在DOS窗口中运行groovy -v进行测试环境变量是否配置成功。
    2. 启动Groovy SDK自带的编辑器:在DOS窗口下执行groovyconsole命令
    3. 编写Groovy程序,保存为test.groovy文件。在DOS窗口下切换到该文件所在的目录,执行groovy test.groovy命令编译运行。
  2. 方式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.字符串
  1. 用单引号'
  2. 用双引号"
  3. 用三引号''',使用三引号括起来的字符串是模板字符串。模板字符串支持换行
def str1 = '$test'; //$test
def str2 = "$test";
def str3 = '''$test''';//$test
println(str1);
println(str2);
println(str3);
4.方法
  1. 方法调用时括号也可以省略
  2. return语句可以不写,会将方法执行过程中的最后一句代码作为返回值
  3. 支持参数的动态类型推导,因此参数的数据类型以及方法的返回值类型可以不指定,像python一样
  4. 方法默认是public修饰的,包括类、属性。
5.运算符
  1. 算数运算符
  2. 关系运算符
  3. 逻辑运算符
  4. 位运算符
  5. 赋值运算符
6.逻辑控制
  1. 循环语句
  2. 分支语句
  3. 顺序语句
7.JavaBean
  1. Groovy会为每个类中没有可见性修饰符的字段生成getter/setter方法,访问这个字段其实是调用它的getter/setter方法
  2. 类中只要定义了getter、setter方法,即使不定义属性,也一样可以作为类的属性访问
  3. 对于没有定义的属性,如果只写了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.集合
  1. List
def list = ['21','11','47','89'];
// 范围索引
println(list[-1..0]) // [89, 47, 11, 21],倒着打印
// 下标索引
println(list[-1]) // 89
  1. 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对象。它是由大括号括起来的一段可执行代码,可以有参数,也可以有返回值。

  1. 闭包定义的语法规则
{[closureParameters ->] statements}
  1. 闭包的定义和执行示例
// 定义一个闭包,赋值给一个变量
def clo = {String str, int number -> println("str:${str},number:${number}")}
// 闭包的执行
clo("test",100)
clo.call("test",100)
  1. 闭包作为方法的参数
// 闭包作为方法的参数
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脚本文件

  1. 新建build.gradle文件,内容如下:
task  print{
	println("HelloWorld")
}
  1. 在build.gradle文件所在目录下打开CMD窗口执行gradle -q print
-q :输出QUIET级别及其之上的日志信息,只显示错误日志
-i :输出INFO级别及其之上的日志信息
-d :输出DEBUG级别及其之上的日志信息