Gradle之尝试使用Gradle

每一个Gradle构建都是以一个脚本开始的。Gradle构建脚本默认名字 build.gradle。当在shell中执行gradle命令时,Gradle会去寻找名字是build.gradle的文件。若是找不到,就会显示一个帮助信息。java

让咱们在Gradle中实现经典的“Hello world!”例子。首先,你须要建立一个名字为build.gradle的文件。在文件中,定义一个独立的原子性工做。在Gradle的词汇中,叫做task任务)。在这个例子中,task叫helloWorld。要打印信息“Hello World!”,须要使用Gradle的通用语言Groovy,将println命令添加到task的action动做)doLast中。Groovy中的Println方法更简短,它至关于Java中的System.out.println方法。shell

task hellWorld{
    doLast{
        println 'Hello world!'
    }
}

运行该task:gradle

$ gradle -q helloWorld

经过 -q 定义可选命令行选项quiet,告诉Gradle只输出该task相关的信息ui

在彻底不须要了解Gradle的状况下,你已经开始使用Gradle的DSL了。task和action是这门语言重要的元素。名字为doLast的action几乎自表达了它的含义。它是task执行的最后一个action。Gradle还容许使用一种更精简的方式来指定相同的逻辑。使用左移符号 << 来简单地表明doLast。如:spa

task helloWorld << {
    println 'Hello world!'
}

咱们来看一个更高级的示例:命令行

task startSession << {
    chant()
}
def chant(){
    ant.echo(message: 'Repeat after me ...')            //1
}
3.times{
    task "yayGradle$it" << {                            //2
        println 'gradle rocks'
    }
}
yayGradle0.dependsOn startSession
yayGradle2.dependsOn yayGradle1, yayGradle0            //3
task groupTherapy(dependsOn: yayGradle2)

一开始你可能没有注意到,这个清单中隐藏了不少高级特性。代码中引入了关键字dependsOn来讲明task之间的依赖(3处)。Gradle会确保被依赖的task总会在定义该依赖的task以前执行。实际上,dependsOn是task的一个方法。这个后面再详细讲。code

咱们以前谈到的一个特性是Gradle和Ant有很好的集成(1处)。由于拥有对Groovy语言特性的彻底访问权,你还可使用chant()方法来打印消息。这个方法能够很是方便地在task中调用。每一个脚本都带有一个ant属性,它赋予了直接访问ant任务的能力。在这个例子中,你可使用Ant的任务echo打印出“Repeat after me”信息。it

Gradle提供的一个漂亮的特性是定义动态task,这意味着能够在运行时指定它们的名字。你的脚本在循环(2处)中使用Groovy在java.lang.Number中扩展的times方法建立3个新的task。Groovy自动地暴露一个隐式变量 it 来指定循环迭代的次数。你使用这个计数器来构建task的名字。对于第一轮迭代,task能够叫做yayGradle0,而后 yayGradle1,yayGradle2。io

如今运行:ast

$ gradle groupTherapy

注:你也许已经注意到例子中省去了quiet命令行选项,这表示运行该task时,会获得更多的信息。

相关文章
相关标签/搜索