task详解(五)
目錄
- 1. task的聲明
- 2. task的生命周期
- 3. task的執行順序
1. task 的聲明
//最簡單的定義方式,定義一個名字為hello的task,并為這個task傳入了一個閉包作為參數。 task hello {print 'hello world' } //我們還可以定義的時候,為Task指定他的類型,分組等一系列配置。這樣我們的Task就繼成于了Copy這個已經存在的Task,并且分在了Test這個組中。 task hello(type: Copy, group: 'Test') {print 'hello world' } //當然我們還可以將分組等屬性的定義放在閉包體中去。如下: task hello(type: Copy) {group 'Test'from 'src/main/doc'into 'build/target/doc'} //其實就是調用了Task類內部的setGroup()方法,以及從Copy類繼成下來的from方法和into方法。2. task的生命周期
首先task有兩個定義的方法,doLast和doFirst。
task hello {doLast{print "數據已成功存入文件." }doFirst{print "記錄已正確生成."}print '文件拷貝完成.' }這個task執行以后,這三條語句的輸出會是什么樣子的呢?答案是這樣的:
文件拷貝完成. 記錄已正確生成. 數據已成功存入文件Task 分成2個不同的生命周期,配置期和執行期。
配置期的代碼總是先于執行期執行的,由于兩句代碼都是在doLast,doFirst的執行期方法,所以總是后于最后一句的輸出。而doFirst總是先于doLast執行。
3. task的執行順序
如果我們希望task按照我們的希望的執行順序,該怎么做呢?
task taskA{print 'i am is task A' }task taskB{print 'i am is task B' }taskB.dependsOn taskA//通過讓taskB依賴于taskA,這樣taskB在執行的時候就一定會先執行taskA但是有個問題,如果我只想執行B而不執行A呢,咋辦?方法就是使用 mustRunAfter 關鍵字
taskB.dependsOn taskAgradle生命周期分三個階段:
- initialization: 初始化階段, 其實就是settings.gradle
- configuration: 配置階段, 其實就是解析每個project 的build.gradle, 形成有向圖, 描述project task之間的依賴關系
- execution:運行階段, 即task真正運行階段
總結
 
                            
                        - 上一篇: Gradle属性(四)
- 下一篇: Gradle增量编译(六)
