Gradle 的介绍入门

238 阅读2分钟

我正在参加「掘金·启航计划」

这篇文章不在于将gradle 讲的多么透彻,而是要给想学习gradle 的人做一个简单的入门介绍。

文章行文不像其他文章那样长篇累牍,而是将重点取出,以一系列标号来表示各个重点内容。希望读者可以抓住重点。

简介

  1. 是一个灵活高效自动化构建工具
  2. 构建脚本一般采用Groovy 编写(也有用Kotlin 的)。
  3. 两种语言都基于JVM。

特点

  1. Java 后端常用Groovy 语言,是一种面向对象的语言。
  2. 所以在Gradle 中处处皆对象
  3. Gradle 的.gradle 脚本实质上是一个Project 对象
  4. 脚本中一些带名字的配置项,如:buildscript / allprojects 这些本质上就是对象中的方法
  5. 这些配置项后面的闭包{} 就是参数
  6. 使用这些配置项的时候,本质就是在调用对象中的一个方法
  7. 在Gradle 中,主要有ProjectTask 对象。
  8. Project 是Gradle 中的构建脚本的表示,一个构建脚本对应一个Project 对象。
  9. Task 是Gradle 中最小的执行单元,它表示一个独立的任务,Project 为Task 提供了执行的上下文。

Groovy 的闭包语法

  1. Groovy 中的闭包是使用{参数列表 -> 代码体} 来表示的代码块。
  2. 当参数小于等于1 个的时候,箭头-> 可以忽略。
  3. 在只有1 个参数的时候,如果不指定参数名,那么默认以it 为参数名。
  4. 在Groovy 中,闭包的类型是Closure,所以说闭包也可以当做参数进行传递。
  5. 闭包有一个delegate 字段,通过这个字段可以把闭包中的执行代码,委托给任意对象来执行。
  6. 示例代码如下:
class Student{
    def name
    def grade
}
// 声明一个Student 对象
def student = new Student()
// 定义一个闭包
def closure = {
    name = 'xiaohong'
    grade = 2
}
// 然后将闭包委托给student 对象来执行
closure.delegate = person
// 执行闭包(也可以调用closure.call() 来执行闭包)
closure()

// 上面那些代码就是将闭包委托给student 对象去执行
// 然后这个闭包在执行时就处于student 对象的上下文
// 所以这个闭包就可以访问到student 对象中的name 和grade 字段,完成赋值工作

println person.name
// 输出内容:xiaohong
println person.age
// 输出内容:2
  1. 在Gradle 中,很多地方都使用了闭包的委托机制
  2. 我们可以通过委托机制,来完成一些特定对象的配置工作。
  3. 在Gradle 中,如果没有为某个闭包指定delegate,那么delegate 就默认为当前的Project 对象。

总结

这篇文章主要是对gradle 做一个简单的入门介绍,包括其简介及特点,以及闭包的概念。