自动化构建技术Gradle(一)groovy

233 阅读2分钟

我们天天和gradle打交道,但是在学这门课程之前如果你突然问我Gradle是什么,我说不上来个所以然来。平时的项目中也不太经常关注gradle的配置,经常就是遇到什么配置方面的问题百度一下基本就能查到。学习了这个课之后,当我再去看一些问题的解决方法的时候,可以做到心中有数,为什么这样做,而且还可以通过一些自定义的Task完成一些构建过程中我们想要做的事。

那么Gradle到底是什么呢

简单总结它就是一个构建工具,可以帮我们把代码生成apk的工具。

它是怎么做的

它是通过一个一个的Project中的Task完成的。每个含有build.gradle的文件夹就是一个Project,每个Project就对应一个输出,而具体执行工作的就是Project中的Task。各个Peoject和Task相互配合,最终完成apk的打包。

如何学习

一。groovy的语法

Gradle工程是基于groovy语言进行编写的,所以我们在学习Gradle之前,需要先了解Groovy的一些基本语法

1.1环境搭建:

配置环境变量:

安装InjectJIdea

1.2Groovy初探

老规矩,先来个Hello World

class GroovyHello {
    public static void main(String[] args) {
        System.out.println("hello world");
    }
}

是不是感觉和Java一毛一样,来点不一样的

class GroovyHello {
    static void main(args) {
        System.out.println("hello world")
    }
}

我们看到pulic,String[],";"都省略了,还能更简单

println "hello world"

连main入口都省略了,像写脚本一样。

而且省略了println后面的括号,所以我们在Gradle文件中看到这种语法,不要觉得他只是一个简单的配置,是编译器自动帮我们对方法进行了处理

1.3基础语法

变量

和JAVA一样分为基本类型,对象类型。

定义方式:既可以强类型定义方式,也可以弱类型定义方式

String str = ""
def str1 = ""

字符串定义

def str1 = '单引号定义'
def str2 = "单引号定义"
def str3 = '''三引号定义'''
String str4 = "格式化字符串${str3}"

逻辑控制

所有编程语言都一样:顺序逻辑,if/else,switch/case,for/while循环 和java稍有不同的是switch语句中case条件可以支持任意类型,非常强大

switch(x){
    case 'a':
        break
    case 0:
        break
    case [4,5,6,'inlist']:
        break
    case 12..30:
        break
    case Integer:
        break
}

闭包

闭包可以说是groovy中的很强大的特性之一,我们在gradle中看到很多的配置都是通过闭包实现的,怎么理解闭包呢,其实它就是一段代码块,是一段可执行的程序,和kotlin的高阶函数一样,可以通过参数传递。

闭包的定义:

def clouser = {String name -> prinln “ XXX ${name}”}

其中name就是闭包的参数,最后一行是闭包的返回值

闭包的调用

//第一种
clouser.call()
//第二种
println clouser()

闭包的一些应用

二。gradle的核心

三。gradle实战