Hello Gradle 任务

2020-04-06  本文已影响0人  TunaIsBack
//第一种是直接已一个任务名字创建任务

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


上一篇 下一篇

猜你喜欢

热点阅读