Gradle的Task(1)自定義簡單的Task

在Gradle中,Task扮演著一個非常重要的角色。當(dāng)執(zhí)行一個Gradle命令時,真正幫我們干活的就是Gradle的task。比如:命令行grade tasks其實就是執(zhí)行“tasks”這個task,來顯示Project中的所有task信息。本文將總結(jié)一下如何自己實現(xiàn)一個簡單的task。

Show me the code。我們直接來看代碼,每一項內(nèi)容都已做注釋。

task myTask {
    // 在配置解析階段運行
    println "Configuration stage: Hello Task"
    // Action在task執(zhí)行階段運行。
    // 向Action list頭中添加action。
    doFirst {
        println "Execution stage"
        println "First action? No"
    }
    // 向Action list尾添加action
    doLast {
        println "Last action? No"
    }
}
// 向Action list頭添加新的action,此時本action將成為task第一個執(zhí)行的action。
myTask.doFirst {
    println "Am I the first action? Yes"
}
// 向Action list尾添加一個新的action。由于后面又添加了一個action,所以這個不是最后執(zhí)行的action。
myTask {
    doLast {
        println "Am I the last action? No"
    }
}
// “<<"是doLast的別名,讓代碼看起來更簡潔。在action list尾添加action,所以這是最后執(zhí)行的action。
myTask << {
    println "Am I the last action? Yes"
}

運行gradle myTask -q,輸出結(jié)果如下,//后為結(jié)果的注釋。

Configuration stage: Hello Task //在配置階段
// 以下為執(zhí)行階段,可以清楚地看出Action執(zhí)行的順序。
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,用于創(chuàng)建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)
)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容