标签:
构建脚本的基础知识:
Gradle里的任何东西都是基于这两个基础概念:projects,tasks
1:gradle命令会在当前目录中查找一个叫build.gradle的文件.我们称这个build.gradle文件为一个构建脚本。这个脚本定义了一个project和它的tasks。
1 task hello{ 2 doLast{ 3 println ‘Hello world!‘ 4 } 5 }
gradle -q hello的输出:Hello world! 这个构建脚本定义了一个独立的task,叫做hello,并且加入了一个action.当你运行gradlehello,Gradle执行叫做hello的task,也就是执行了你所提供的action.这个action是一个包含了一些Groovy代码的闭包。
-q是干什么的?
-q.代表quite模式.它不会生成Gradle的日志信息(logmessages),所以用户只能看到tasks的输出.它使得的输出更加清晰.你并不一定需要加入这个选项.
有一种比我们之前定义的hello任务更简明的方法:
1 task hello <<{ 2 println ‘Helloworld!‘ 3 }
它定义了一个叫做hello 的任务, 这个任务是一个可以执行的闭包. 我们将使用这种方式来定义这本指南里所有的任务.
构建脚本代码:
在Gradle任务里使用Groovy
1 task upper << { 2 String someString = ‘luochuang‘ 3 println "Original: " + someString; 4 println "Upper case:" + someString.toUpperCase(); 5 }
Original: luochuang
Upper case:LUOCHUANG
任务依赖:
就像你所猜想的那样,你可以声明任务之间的依赖关系.
1 task hello << { 2 println ‘Hello World!‘ 3 } 4 5 task intro(dependsOn: hello) << { 6 println "i am gradle" 7 }
Hello World!
i am gradle
动态任务:
1 4.times {counter -> 2 task "task$counter" << { 3 printf "I‘m task number $counter" 4 } 5 }
这里动态的创建了task0,task1,task2,task3
使用已经存在的任务:
当任务创建之后,它可以通过API来访问.这个和Ant不一样.举个例子,你可以创建额外的依赖.
1 4.times {counter -> 2 task "task$counter" << { 3 println "I‘m task number $counter" 4 } 5 } 6 task0.dependsOn task2, task3
1 task hello << { 2 println ‘hello world‘ 3 } 4 5 hello.doFirst{ 6 println‘hello venus‘ 7 } 8 9 hello.doLast{ 10 println ‘hello mars‘ 11 } 12 13 hello << { 14 println ‘hello jupiter‘ 15 }
hello venus
hello world
hello mars
hello jupiter
doFirst和doLast可以被执行许多次.他们分别可以在任务动作列表的开始和结束加入动作.当任务执行的时候,在动作列表里的动作将被按顺序执行.这里第四个行为中<<操作符是doLast的简单别称.
短标记法:
正如同你已经在之前的示例里看到,有一个短标记$可以访问一个存在的任务.也就是说每个任务都可以作为构建脚本的属性:
1 task hello << { 2 println(‘hello world!‘) 3 } 4 5 hello.doLast{ 6 println‘Greeting from the $hello.name task.‘ 7 }
这里的name是任务的默认属性,代表当前任务的名称,这里是hello.这使得代码易于读取,特别是当使用了由插件(如编译)提供的任务时尤其如此.
自定义任务属性:
gradle允许在的脚本中定义一个或者是多个默认的任务:
1 defaultTasks ‘clean‘,‘run‘ 2 3 task clean << { 4 println ‘Default Cleaning!‘ 5 } 6 7 task run << { 8 println ‘Default Running!‘ 9 } 10 11 task other << { 12 println "i‘m not a default task!" 13 }
Default Cleaning!
Default Running!
等价于gradle clean run.在一个多项目构建中,每一个子项目都可以有它特别的默认任务.如果一个子项目没有特别的默认任务,父项目的默认任务将会被执行.
标签:
原文地址:http://www.cnblogs.com/luochuanghero/p/4383939.html