Task是Gradle编译的基础,每个编译任务就是一个Task。例如编译一个jar包,一个可执行文件等等。本文主要是描述在命令行下执行gradle命令的。只要你装了Android studio,你应该就有gradle了。
配置命令行gradle###
gradle的可执行文件位于Androi studio的安装目录下的gradle\gradle-x.x\bin下面,把这个路径配到环境变量中,就可以在cmd直接调用gradle了。
在命令行输入gradle,显示如下,说明配置好命令行了,可以开心玩耍了。
最简单的gradle Task##
新建一个build.gradle文件,输入下面内容,然后保存。
task hello {
doLast {
println 'Hello, World!'
}
}
在命令行输入gradle tasks开始执行,就可以看到我们的输入罗。但除了看到我们的hello task外。还有两个task,Build Setup Tasks,Help Tasks。这两个Task就是gradle环境准备的一些Task啦。不用管它。
如果我们要单独运行我们的hello task的话,命令行输入gradle hello就行了
给Task分组###
有时我们有很多Task,想给他分个组。例如上面提到的Build Setup Tasks,Help Tasks就是两个Task组。我们上面新建的hello属于Other tasks分组,因为我们没有指定hello的分组,他就会默认去到Other tasks分组中去。其实我们可以指定task的分组。见下面的脚本。下面的脚本就描述了hello属于Welcome分组,分组的描述是Produces a greeting。
task hello {
group 'Welcome'
description 'Produces a greeting'
doLast {
println 'Hello, World'
}
}
在命令行运行gradle tasks看看,可以看到分组和描述都打印出来了。
自定义Task类###
默认的task都是继承与DefaultTask的,所以我们要自定义Task时,要新建一个类继承与 DefaultTask,见下面脚本。自定义了一个Task类Greeting,里面有一个方法sayGreeting(),加了注解@TaskAction后会自动执行这个函数。
class Greeting extends DefaultTask {
String message
String recipient
@TaskAction
void sayGreeting() {
println "${message}, ${recipient}!"
}
}
task hello ( type : Greeting ) {
group 'Welcome'
description 'Produces a world greeting'
message 'Hello'
recipient 'World'
}
运行结果
参考:
https://guides.gradle.org/writing-gradle-tasks/
Writing Custom Gradle Tasks