美文网首页
Hello Gradle 任务

Hello Gradle 任务

作者: TunaIsBack | 来源:发表于2020-04-06 21:49 被阅读0次
    • 多种方式创建任务
    //第一种是直接已一个任务名字创建任务
    
    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


    • 打首发包


    • 打非首发包


    相关文章

      网友评论

          本文标题:Hello Gradle 任务

          本文链接:https://www.haomeiwen.com/subject/wyibphtx.html