<<<在gradle

时间:2014-11-10 02:07:03

标签: gradle build.gradle

我开始玩gradle并尝试理解<<。

的目的

在build.gradle包含时执行gradle -q task0给了我task 0

4.times { counter ->
    task "task$counter" <<{
        println "task $counter"
    }
}

当build.gradle包含

时执行gradle -q test {0123}
4.times { counter ->
    task "task$counter" {
        println "task $counter"
    }
}

返回

task 0
task 1
task 2
task 3

有人可以帮助理解<<的目的吗?

2 个答案:

答案 0 :(得分:0)

如果您有<<,它将在执行任务时执行打印行,并且在配置任务时不执行打印行。

这可能会影响您的输出,因为Gradle生命周期是初始化&gt;配置&gt;执行。

例如,如果您的build.gradle包含:

task "task0" << {
    println "task 0"
}

task "task1" {
    println "task 1"
}

然后,如果您执行task0,您将获得:

> gradlew -q task0
task 1
task 0

即使您只希望打印task 0。如果你执行task1,你会得到:

> gradlew -q task1
task 1

这是因为task1在配置期间打印出来,即使您没有运行它,整个build.gradle文件也会在配置阶段被读入以确定执行的内容。你甚至可以去:

> gradlew clean
task 1

您可以从task1获得输出。

答案 1 :(得分:0)

我认为这里的问题是&lt;&lt; 的意思。它是预定义的左移操作符,我们用Gradle任务说。 &#34; Gradle任务,我想要关闭&lt;&lt;&lt;&lt;&lt;&lt;&lt;作为你的最后一个动作&#34;。与

一起
task "taskHello" <<{
        println "Hello Gradle action"
}

你说在我的构建中我有一个任务,其名称是taskHello,我希望用

来表示它
gradle taskHello

采取行动

   {
    println "Hello Gradle action"
   }

&LT;&LT;是doLast {}的语法糖缩写,因此您可以像这样重写您的任务:

4.times { counter ->
    task "task$counter" {
       doLast{
        println "task $counter"
    }
  }
}