2016-01-20 121 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