Google Code Prettify

2018年2月23日 星期五

Gradle: task

Gradle 中可以有許多 task,透過 task 可以將 build.gradle 中的工作分成細項,讓我們指定要執行的項目,現在來看個例子:
version = '0.1.0-SNAPSHOT'

task first(group: "test", description: "first task") { 
    doLast {
        println "first" 
    }
}

task second { 
    doLast {
        println "second" 
    }
}

task printVersion(dependsOn: [second, first], group: "test", description: "printVersion task") {
    doLast {
        logger.quiet "Version: $version"
    }
}
  • task 的屬性: group、description
如上有三個 task,task first 後面還帶了兩個屬性 - group、description,group 可以用來將 task 編組,description 則可以用來描述 task 的功用,這有什麼好處? 我們可以執行:
gradle tasks --all
這個命令可以列出所有 task,結果如下:
可以看到 first、printVersion 兩個 task 被放在同一組,也有加上 description 的說明,這樣可以方便非 gradle script 的編寫者了解 gradle script 中各個 task 的功用。
  • 使用 dependsOn 定義 task 間的依賴關係
看完說明,執行看看,指令如下:
gradle printVersion
這個指令是指出,只執行 printVersion 這個 task 就好,執行結果如下:
結果三個 task 都有執行,因為在 printVersion 中有個 dependsOn 屬性,指出在執行 printVersion 前要先執行 second 和 first,所以三個都執行了! 要特別注意的是,dependsOn 不保證 task 依賴的順序,就像 gradle script 中寫的是 [second, first],看似要先執行 second,實際上卻先執行 first。
  • -q 即是 quiet
上面的執行方式有點"雜訊",如果我們只想輸出 task 本身輸出的訊息,指令可以如下:
gradle -q printVersion
得到如下結果:





沒有留言:

張貼留言