Hello Gradle 任务

  • 多种方式创建任务
//第一种是直接已一个任务名字创建任务

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


  • 打首发包


  • 打非首发包


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容