欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Gradle之尝试使用Gradle

程序员文章站 2024-03-23 13:07:52
...

每个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时,会得到更多的信息。

转载于:https://my.oschina.net/fhd/blog/518248