Gradle有任务组的概念,可以为任务配置分组和描述,以便于更好的管理任务,拥有良好的可读性。
task hello { group = ‘build’ description = ‘hello world’ doLast { println “任务分组: ${group}” println “任务描述: ${description}” } } task go(dependsOn: hello) << { println “go for it” }
Gradle日志级别
级别 用于
ERROR 错误消息
QUIET 重要的信息消息
WARNING 警告消息
LIFECYCLE 进度信息消息
INFO 信息性消息
DEBUG 调试消息
前面我们通过gradle -q +任务名称来运行一个指定的task,这个q是命令行开关选项,通过开关选项可以控制输出的日志级别。
开关选项 输出日志级别
无日志选项 LIFECYCLE及更高级别
-q或者 --quiet QUIET及更高级别
-i或者 --info INFO及更高级别
-d或者 --debug DEBUG及更高级别
Gradle 命令行
略
Gradle 的语法
1、声明变量
Groovy中用def关键字来定义变量,可以不指定变量的类型,默认访问修饰符是public。
def a = 1; def int b = 1; def c = “hello world”;
2、方法
方法使用返回类型或def关键字定义,方法可以接收任意数量的参数,这些参数可以不申明类型,如果不提供可见性修饰符,则该方法为public,如果指定了方法返回类型,可以不需要def关键字来定义方法,如果不使用return ,方法的返回值为最后一行代码的执行结果。
用def关键字定义方法。
task method <<{ add (1,2) minus 1,2 //1 } def add(int a,int b) { println a+b //3 } int minus(a,b) { return a-b }
3、类
Groovy类非常类似于Java类。
task method <<{ def p = new Person() p.increaseAge 5 println p.age } class Person { String name Integer age =10 def increaseAge(Integer years) { this.age += years } }
Groovy类与Java类有以下的区别:
默认类的修饰符为public。
没有可见性修饰符的字段会自动生成对应的setter和getter方法。
类不需要与它的源文件有相同的名称,但还是建议采用相同的名称。
4、语句
(1) 断言
Groovy断言和Java断言不同,它一直处于开启状态,是进行单元测试的首选方式。
task method <<{ assert 1+2 == 6 }
(2)for循环
Groovy支持Java的for(int i=0;i<N;i++)和for(int i :array)形式的循环语句,另外还支持for in loop形式,支持遍历范围、列表、Map、数组和字符串等多种类型
//遍历范围 def x = 0 for ( i in 0…3 ) { x += i } assert x == 6 //遍历列表 def x = 0 for ( i in [0, 1, 2, 3] ) { x += i } assert x == 6 //遍历Map中的值 def map = [‘a’:1, ‘b’:2, ‘c’:3] x = 0 for ( v in map.values() ) { x += v } assert x == 6
(3)switch语句
task method <<{ def x = 16 def result = “” switch ( x ) { case “ok”: result = “found ok” case [1, 2, 4, ‘list’]: result = “list” break case 10…19: result = “range” break case Integer: result = “integer” break default: result = “default” } assert result == “range” }
5、数据类型
Groovy中的数据类型主要有以下几种:
Java中的基本数据类型
Groovy中的容器类
闭包
(1)字符串
在Groovy种有两种字符串类型,普通字符串String(java.lang.String)和插值字符串GString
(groovy.lang.GString) def name = ‘Android进阶之光’ println “hello ${name}” println “hello $name” task method <<{ def name = ‘’'Android进阶之光 Android进阶解密 Android进阶?‘’’ println name }
(2)List
Groovy没有定义自己的集合类,它在Java集合类的基础上进行了增强和简化。Groovy的List对应Java中的List接口,默认的实现类为Java中的ArrayList。
def number = [1, 2, 3] assert number instanceof List def linkedList = [1, 2, 3] as LinkedList assert linkedList instanceof java.util.LinkedList task method <<{ def number = [1, 2, 3, 4] assert number [1] == 2 assert number [-1] == 4 //1 number << 5 //2 assert number [4] == 5 assert number [-1] == 5 } def name = [one: ‘魏无羡’, two: ‘杨影枫’, three: ‘张无忌’] assert name[‘one’] == ‘魏无羡’ assert name.two == ‘杨影枫’
注释1处的索引-1是列表末尾的第一个元素。注释2处使用<<运算符在列表末尾追加一个元素
其他
String a = ‘23’ int b = a as int def c = a.asType(Integer) assert c instanceof java.lang.Integer