Gradle生命周期介绍与Groovy语言
【摘要】
Gradle基础介绍
文章目录
Gradle基础介绍1.项目构建2. 什么是Gradle2.1.Gradle组成2.2.Gradle优势2.3.Gradle执行过程2.4.Gradle执行过程监...
Gradle基础介绍
1.项目构建
- 什么是项目构建:构建包括项目代码开发—代码编译为class文件–代码测试—打包(JAR或War)–部署 一条流程,称为项目构建。
- 项目构建主流工具: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)