2016-01-20 102 views

回答

2

Gradle有兩個階段:配置和執行。

在配置階段,Gradle解析並執行build.script DSL代碼。在分析過程中,Gradle會創建任務實例並執行其內部代碼以配置它們。

在第一個示例中,println代碼將在此配置過程中立即執行。

在第二個示例中,doLast閉包將被添加到任務中。它只會在執行階段執行。

要看到差距,修改任務:

task myTask { 
    println 'hello' 
    doLast { 
     println 'hello again' 
    } 
} 

輸出將是

hello    <---- this was configuration phase 
:myTask 
hello again  <---- this was execution phase 
1

第一個代碼片段應該是:

task hello << { 
    println 'Hello world!' 
} 

這意味着:

  • 當您執行Gradle hello時,Gradle將查找一個 的任務,該任務在默認構建腳本build.gradle中命名。如果Gradle發現 任務,它將使用Groovy引擎執行代碼。
  • 大括號之間的每行代碼(LOC)組成任務。
  • 雙< <,是定義一個搖籃任務的簡寫,所述 普通寫法是這樣的:

    task hello { 
        doLast { 
         println 'Hello world!' 
        } 
    } 
    

所以,代碼的第二代碼段只是一個代碼第一片斷的普通寫法。雙重< <是定義doLast任務塊的簡寫形式

+0

爲什麼*應*? – Opal