Gradle之尝试使用Gradle

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

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

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

运行该task:

$ gradle -q helloWorld

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

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

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的一个方法。这个后面再详细讲。

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

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

现在运行:

$ gradle groupTherapy

Gradle之尝试使用Gradle

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

你可能感兴趣的:(Gradle之尝试使用Gradle)