列出項目中全部可用的taskweb
在上一blog中展現瞭如何經過gradle命令運行一個指定的task。要運行一個task,須要知道它的具體名字。如何能夠在不用看源代碼的狀況下知道全部可用的task,是否是很棒?Gradle提供了一個叫做tasks的幫助任務來幫助你查看構建腳本和顯示每一個可使用的task,包括描述該task做用的信息。以quiet模式運行gradle tasks的輸入結果以下:shell
$ gradle -q tasks
關於輸出,有幾點須要說明。Gradle提供了任務組的概念,你能夠把它看做是多個task的集羣。每一個構建腳本都會默認暴露Help tasks任務組。若是某個task不屬於一個任務組,那麼它就會顯示在Other tasks中。在這裏能夠找到groupTherapy任務。之後咱們會學習如何把task添加到一個任務組中。緩存
你能夠會想,在構建腳本中定義的其餘task去哪了?在輸出的底部,你會看到一條提示,要得到關於task的更多信息,請使用--all選項:網絡
$ gradle -q tasks --all
--all選項是查看task執行順序的好辦法,爲了有更好的可讀性,依賴任務以縮進方式有序地顯示在根task的下面。學習
任務執行gradle
在以前的例子中,經過給命令gradle添加一個參數來執行指定的任務。Gradle的命令行實現會確保任務以及它們的全部依賴都被執行。你也能夠在命令行中經過參數定義,一次執行多個任務。如例:ui
$ gradle yayGradle0 groupTherapy
任務一般只會執行一次,不管它們是在命令行中指定的仍是做爲另外一個任務的依賴。spa
毫無心外,和運行gradle groupTherapy時的輸出同樣。正確的順序被保存而且每一個任務只執行一次。插件
任務名字縮寫命令行
Gradle最有用的特性之一就是可以以駝峯式的縮寫在命令行上運行任務。若是你想要以縮寫方式運行以前的例子,則只須要輸入以下示例:
$ gradle gT $ gradle yG0
當你要運行名字特別長的任務或者多個任務參數時,這個特性很是有用。注意:任務名字的縮寫必須是惟一的,Gradle才能找到相應的任務。
在執行時排除一個任務
有時候你想要在構建運行時排除一個指定任務。Gradle提供了一個命令行選項 -x 來實現。假設你想要排除任務yayGradle0:
$ gradle groupTherapy -x yayGradle0
Gradle排除了任務yayGradle0和它的依賴任務startSession,這個概念叫作智能排除。
命令行選項
咱們來探索最重要的通用命令行選項,控制構建腳本日誌級別的標誌位,以及給項目提供參數的方法。Gradle命令容許你同時定義一個或者多個選項。假設你想要將日誌級別改變到INFO,則可使用 -i 選項,或者若是想要打印出在執行期間發生錯誤時的堆棧蹤影信息,則可使用 -s 選項。例如:
$ gradle groupTherapy -is #或者 $ gradle groupTherapy -i-s
正如你所看到的,能夠輕鬆地組合多個命令行選項。經過 -h 選項,你能夠看到全部可用的選項:
$ gradle -h
舉幾個重要的例子:
-?,-h,--help:打印出全部可用的命令行選項,包含描述信息。
-b,--build-file:Gradle構建腳本的默認命名約定是build.gradle。使用這個命令行選項能夠執行一個特定名字的構建腳本(好比,gradle -b test.gradle)。
--offline:一般,構建中聲明的依賴必須在離線倉庫中存在纔可用。若是這些依賴在本地緩存中沒有,那麼運行在一個沒有網絡鏈接環境中的構建都會失敗。使用這個選項可讓你以離線模式運行構建,僅僅在本地緩存中檢查依賴是否存在。
參數選項
-D,--system-prop:Gradle是以一個JVM進程運行的。和全部的Java進程同樣,你能夠提供一個系統參數,就像-Dmyprop=myvalue這樣。
-P,--project-prop:項目參數是構建腳本中可用的變量。你可使用這個選項直接向構建腳本中傳入參數(好比:-Pmyprop=myvalue)。
日誌選項
-i,--info:在默認設置中,Gradle構建不會提供大量的輸出信息。經過這個選項能夠將Gradle的日誌級別改變到INFO以得到更多信息。若是你想要知道構建中發生了什麼,這個選項很是有用。
-s,--stacktrace:若是構建在運行中出現錯誤,你會想要知道錯誤是從哪裏開始的。-s選項在有異常拋出時會打印出簡短的堆棧跟蹤信息,幫助你進行調度。
-q,--quiet:減小構建出錯時打印出來的錯誤日誌信息。
幫助任務
tasks:顯示項目中全部可運行的task,包括它們的描述信息。項目中應用的插件可能會提供一些額外的task。
properties:顯示出項目中全部可用的屬性。某些屬性是由Gradle的project對象提供的,project對象是一個構建的本質表現形式。其餘的屬性都是用戶定義的,要麼來自於屬性文件或者命令行選項,要麼是直接在構建構建腳本中定義的。
Gradle守護進程
當Gradle成爲平常工做的一部分時,你會發現須要重複地運行構建。若是你在一個web應用上工做,就更是如此。無論哪一種方式,你都會發現效率很重要。每次初始化一個構建時,JVM都要啓動一次,Gradle的依賴要載入到類加載器中,還要創建項目對象模型。這個過程須要花上好幾秒。Gradle守護進程是這個問題的救星。
守護進程之後臺進程方式運行Gradle。一旦啓動,gradle命令就會在後續的構建中重用以前建立的守護進程,以免啓動時形成的開銷。在個人機器上,成功地完成運行groupTherapy任務要花上3秒鐘。咱們但願提升啓動和執行的效率。在命令行中啓動Gradle守護進程很簡單,在運行gradle命令時加上 --daemon 選項。示例:
$ gradle groupTherapy --daemon
爲了驗證守護進程在運行,你能夠查看系統進程列表:
$ ps aux | grep gradle
後續觸發的gradle命令都會重用守護進程。記住,守護進程只會被建立一次,即使你在命令行中加了 --daemon 選項。守護進程會在3小時空間時間以後自動過時。任什麼時候候你均可以選擇在執行構建時不使用守護進程,只須要添加命令行選項 --no-daemon 便可:
$ gradle groupTherapy --no-daemon
要手動中止守護進程,能夠執行:
$ gradle --stop