美文网首页Android 学习资源Android知识
Gradle的Task(1)自定义简单的Task

Gradle的Task(1)自定义简单的Task

作者: PythonDeveloper | 来源:发表于2016-09-18 21:19 被阅读433次

    在Gradle中,Task扮演着一个非常重要的角色。当执行一个Gradle命令时,真正帮我们干活的就是Gradle的task。比如:命令行grade tasks其实就是执行“tasks”这个task,来显示Project中的所有task信息。本文将总结一下如何自己实现一个简单的task。

    Show me the code。我们直接来看代码,每一项内容都已做注释。

    task myTask {
        // 在配置解析阶段运行
        println "Configuration stage: Hello Task"
        // Action在task执行阶段运行。
        // 向Action list头中添加action。
        doFirst {
            println "Execution stage"
            println "First action? No"
        }
        // 向Action list尾添加action
        doLast {
            println "Last action? No"
        }
    }
    // 向Action list头添加新的action,此时本action将成为task第一个执行的action。
    myTask.doFirst {
        println "Am I the first action? Yes"
    }
    // 向Action list尾添加一个新的action。由于后面又添加了一个action,所以这个不是最后执行的action。
    myTask {
        doLast {
            println "Am I the last action? No"
        }
    }
    // “<<"是doLast的别名,让代码看起来更简洁。在action list尾添加action,所以这是最后执行的action。
    myTask << {
        println "Am I the last action? Yes"
    }
    

    运行gradle myTask -q,输出结果如下,//后为结果的注释。

    Configuration stage: Hello Task //在配置阶段
    // 以下为执行阶段,可以清楚地看出Action执行的顺序。
    Am I the first action? Yes 
    Execution stage
    First action? No
    Last action? No
    Am I the last action? No
    Am I the last action? Yes
    

    其中,task是Project中定义的method,用于创建task,其Signature为

    Task task(Map<String,?> args,
            String name,
            Closure configureClosure)
    

    更多信息请参考[官方文档](https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html#task(java.util.Map, java.lang.String, groovy.lang.Closure)
    )。

    相关文章

      网友评论

        本文标题:Gradle的Task(1)自定义简单的Task

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