日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

task详解(五)

發布時間:2024/2/28 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 task详解(五) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 1. task的聲明
  • 2. task的生命周期
  • 3. 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方法。

首先task有兩個定義的方法,doLast和doFirst。

task hello {doLast{print "數據已成功存入文件." }doFirst{print "記錄已正確生成."}print '文件拷貝完成.' }

這個task執行以后,這三條語句的輸出會是什么樣子的呢?答案是這樣的:

文件拷貝完成. 記錄已正確生成. 數據已成功存入文件

Task 分成2個不同的生命周期,配置期和執行期。

配置期的代碼總是先于執行期執行的,由于兩句代碼都是在doLast,doFirst的執行期方法,所以總是后于最后一句的輸出。而doFirst總是先于doLast執行。

如果我們希望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 taskA

gradle生命周期分三個階段:

  • initialization: 初始化階段, 其實就是settings.gradle
  • configuration: 配置階段, 其實就是解析每個project 的build.gradle, 形成有向圖, 描述project task之間的依賴關系
  • execution:運行階段, 即task真正運行階段
println '=====在配置階段執行===='task configured {println '=====也在配置階段執行=====' }task test << {println '======運行階段執行=====' }task testBoth {doFirst {println '======在task運行之前執行======'}doLast {println '======在task運行之后執行======'}println '======在配置階段執行======' }

總結

以上是生活随笔為你收集整理的task详解(五)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。