Gradle之使用Gradle的命令行

列出項目中全部可用的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
相關文章
相關標籤/搜索