- 多种方式创建任务
//第一种是直接已一个任务名字创建任务
def Task exCreateTask=task(exCreateTask)
exCreateTask.doLast{
println "创建方法原型为:Task task(String name) thorows InvalidUserDataException"
}
// 第二种以一个任务名字+一个对应该任务配置的Map对象来创建任务
def Task exCreateTask=task(exCreateTask,group:BasePlugin.BUILD_GROUP)
exCreateTask.doLast{
println "创建方法原型为:Task task(String name,Map<String,?> args) thorows InvalidUserDataException"
println "任务分组:${exCreateTask.group}"
}
// 第三种以一个任务名字+闭包配置的方式
task exCreateTask{
description '演示任务创建'
doLast{
println "创建原型为:Task task(String name,Closure configureClosure)"
println "任务描述:${description}"
}
}
tasks.create('exCreateTask2'){
description '演示任务创建'
doLast{
println "创建原型为:Task task(String name,Closure configureClosure)"
println "任务描述:${description}"
}
}
- 多种方式访问任务
task exCreateTask{
description '演示任务创建'
doLast{
println "创建原型为:Task task(String name,Closure configureClosure)"
println "任务描述:${description}"
}
}
tasks['exCreateTask'].doLast{
println tasks.findByPath(':gradle-test:exCreateTask')
// println tasks.getByPath(':gradle-test:exCreateTask')
println tasks.findByName('exCreateTask')
println tasks.getByName('exCreateTask')
}
任务分组和描述
def Task myTask=task exGroupTask
myTask.group=BasePlugin.BUILD_GROUP
myTask.description='这是一个构建的引导任务'
myTask.doLast{
println "group:${group} description:${description}"
}
任务排序
task task1{
doLast{
println 'task1 run...'
}
}
task task2{
doLast{
println 'task2 run...'
}
}
//task1必须在task2执行之后执行
task1.mustRunAfter(task2)
//task1应该在task2执行之后执行
//task1.shouldRunAfter task2
任务的启用和禁用
task myTask{
doLast{
println 'disenabledTask'
}
}
myTask.enabled=false
任务的onlyIf断言
断言就是一个条件表达式,Task有一个onlyIf方法,它接受一个闭包作为参数,如果该闭包返回true则该任务执行,否则跳过。
final String BUILD_APP_ALL="all"
final String BUILD_APPS_SHOUFA="shoufa"
final String BUILD_APPS_EXCLUDE_SHOUFA="exclude_shoufa"
task exQQRelease{
doLast{
println "打应用宝的包"
}
}
task exBaiduRelease{
doLast{
println "打百度的包"
}
}
task exHuaweiRelease{
doLast{
println "打华为的包"
}
}
task exXiaomiRelease{
doLast{
println "打小米的包"
}
}
task build{
group BasePlugin.BUILD_GROUP
description "打渠道包"
}
build.dependsOn exQQRelease,exBaiduRelease,exHuaweiRelease,exXiaomiRelease
exQQRelease.onlyIf{
def execute=false
if(project.hasProperty("build_apps")){
Object buildApps=project.property("build_apps")
if(BUILD_APPS_SHOUFA.equals(buildApps)){
execute=true
}
}else{
execute=true
}
execute
}
exBaiduRelease.onlyIf{
def execute=false
if(project.hasProperty("build_apps")){
Object buildApps=project.property("build_apps")
if(BUILD_APPS_SHOUFA.equals(buildApps)){
execute=true
}
}else{
execute=true
}
execute
}
exHuaweiRelease.onlyIf{
def execute=false
if(project.hasProperty("build_apps")){
Object buildApps=project.property("build_apps")
if(BUILD_APPS_EXCLUDE_SHOUFA.equals(buildApps)){
execute=true
}
}else{
execute=true
}
execute
}
exXiaomiRelease.onlyIf{
def execute=false
if(project.hasProperty("build_apps")){
Object buildApps=project.property("build_apps")
if(BUILD_APPS_EXCLUDE_SHOUFA.equals(buildApps)){
execute=true
}
}else{
execute=true
}
execute
}
- 打所有渠道包
命令行中-P的意思为Project指定K-V格式的属性键值对,格式为-PK=V
-
打首发包
-
打非首发包