Gradle生命周期介绍与Groovy语言

举报
brucexiaogui 发表于 2021/11/26 00:39:13 2021/11/26
【摘要】 Gradle基础介绍 文章目录 Gradle基础介绍1.项目构建2. 什么是Gradle2.1.Gradle组成2.2.Gradle优势2.3.Gradle执行过程2.4.Gradle执行过程监...

Gradle基础介绍

1.项目构建

  1. 什么是项目构建:构建包括项目代码开发—代码编译为class文件–代码测试—打包(JAR或War)–部署 一条流程,称为项目构建。
  2. 项目构建主流工具:Apache ant(2000年)—》 Apache Maven(2004年)----》Gradle(2012年)

2. 什么是Gradle

2.1.Gradle组成

在这里插入图片描述

2.2.Gradle优势

Gradle不仅仅是一个构建工具,它其实是一个编程框架,通过代码实现各种功能,能力远远大于构建工具。

  • 灵活性:maven 和 ant 不能修改构建过程,不能修改构建脚本按照我们的命令产出。
  • 粒度性:maven 和 ant 代码和构建是分开的,构建过程不知道内部做了什么打包生产了apk,gradke从源码编译到资源编译都是经过执行一个一个Task生成的,Task源码都是开源的可以通过修改Task进行动态改变的。
  • 扩展性:Gradle支持插件机制 可以直接复用已有的插件。
  • 兼容性:Gradle兼容所有maven 和ant 的功能

2.3.Gradle执行过程

  • 当我们执行gradle的build或者clean等命令时执行过程就是下面流程图中描述的执行过程
    • 1.初始化阶段执行settings.gradle文件,读出整个工程中有多少个project。
    • 2.配置阶段生成Tasek依赖关系图。
    • 3.执行阶段,按照配置阶段生成的task关系图执行每个Task任务
      在这里插入图片描述

2.4.Gradle执行过程监听

2.4.1. 输出初始化监听(settings.gradle)
rootProject.name = 'gradleInfo'
println "初始化阶段开始执行"

  
 
  • 1
  • 2
2.4.2. 执行流程监听
  • this.beforeEvaluate {} :监听:初始化到执行配置之前,初始化执行就是settings.gradle文件内容
  • this.afterEvaluate{} : 监听:配置开始到结束阶段
  • this.gradle.buildFinished{} : 监听:gradle执行完毕
//监听:初始化到执行配置之前。初始化执行就是settings.gradle文件内容
this.beforeEvaluate {}
//监听:配置开始到结束
this.afterEvaluate {
    println "配置阶段执行完毕"
}
//监听:gradle执行完毕
this.gradle.buildFinished {
    println "gradel执行阶段执行完毕"
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3.IDEA结合Gradle

3.1.Gradle项目结构

在这里插入图片描述

3.2.Gradle窗口面板

在这里插入图片描述

4. groovy语言

Gradle 使用groovy语言编写脚本进行项目配置,groovy语言是在javaJVM环境上运行,所以groovy语言最后都会转成java语言运行。因此groovy语言的语法和java语法格式基本通用。

4.1.IDEA运行groovy语言

  • 打开 IDEA–Tools–GroovyConsole
    在这里插入图片描述
  • 在GroovyConsole控制台编写groovy语言并运行
    在这里插入图片描述

4.2. groovy输出语句

//-------输出语句三种形式
//语句结尾有分号
println ("Gradle");
//语句结尾无分号
println ("Gradle")
//语句结尾省略括号
println "Gradle"

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4.3.定义变量

//-------定义变量 groovy语言中没有基本类型都是对象类型。
//强类型引用 变量名必须和值类型一致
int x = 3
//弱类型引用 变量名称类型只有在赋值的时候才确定
def str = "Type string"
println x.class
println str.class

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4.4.方法定义与调用

//---------方法的定义和调用
//定义一个有参方法
def moter(def x) {
    println x
}

//调用有参方法
moter("Groovy")

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4.5.集合定义

//---------集合
//List集合
def listDemo = ["a","b","c"]
//根据下标 输出集合元素
println listDemo[1]
//遍历集合元素
for (list in listDemo) {
    println list
}

//Map集合
def mapDemo = ["a":"app","b":"banana","c":"calc"]
//直接获取map中的元素
println mapDemo.get("b")
//遍历map
for (entry in mapDemo) {
    println ("map key: "+entry.getKey() +" ,"+ "Val:"+entry.getValue())
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

4.6.闭包

闭包在这里就是代码中的一段代码块,作为参数在方法间传递。

//定义一个闭包,闭包就是一段代码块
def b = {
    println "Groovy 闭包"
}

//定义一个含有闭包参数的方法,Closure类就是groovy提供的lang包下的常用闭包类
def desplays(Closure closure) {
    //执行闭包内容
    closure();
}

//调用闭包参数方法
desplays (b)

//定义一个带有参数的闭包
def p = {
    v -> println("执行带有参数闭包:"+ v)
}

//闭包传入参数
def paramPlay(Closure closure) {
    //闭包传入参数
    closure("my name is parames")
}

//调用带有参数的闭包
paramPlay(p)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。

原文链接:brucelong.blog.csdn.net/article/details/105886856

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。