1、任务常见的几种定义方式
几种常见的任务定义方式,我直接上代码,在代码中写明了注释,大家一看就懂的,就不一一展开介绍了,我们写代码时可以根据自己的爱好灵活选择使用哪种方式就好,其代码如下:
// 第一种,前面见过的
task hello {
doLast {
println "Hello World!"
}
}
// 第二种,以字符串形式定义的
task('hello') {
doLast {
println "hello"
}
}
// 第三种,以字符串形式定义的,
// 其类型为Copy任务类型,接下来会具体讲解
task('copy', type: Copy) {
from(file('srcDir'))
into(buildDir)
}
// 第四种,使用create创建
tasks.create(name: 'hello') {
doLast {
println "hello"
}
}
// 第四种,使用create创建
tasks.create(name: 'copy', type: Copy) {
from(file('srcDir'))
into(buildDir)
}
2、对任务进行配置
针对前面见到的 Copy 任务,我将详细的分析介绍下任务是如何进行配置,当然其它的任务类型和 Copy 类型配置大同小异,了解了 Copy 类型的配置后自己就可以举一反三的实现其它的任务了。
首先我们定义一个 myCopy 的任务,并且使用闭包的方式来配置该任务,代码如下:
task myCopy(type: Copy) {
from 'resources'
into 'target'
include('**/*.txt', '**/*.xml', '**/*.properties')
}
3、任务的重写
task copy(type: Copy)
task copy(overwrite: true) {
doLast {
println('overwrite the copy.')
}
}
这个任务重写了拷贝任务,仅仅打印输出了一行文字
4、跳过或禁止某个任务
这个比较简单,当然在实际项目中又是非常实用的一个技巧,比如,我们构建打包时,有时候不需要打全包,只需要打部分工程,这时我们就可以通过条件选择进行跳过某些任务执行。直接看代码吧:
task hello {
doLast {
println 'hello world'
}
}
hello.onlyIf { !project.hasProperty('skipHello') }
hello.enabled = false