我开始玩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
有人可以帮助理解<<
的目的吗?
答案 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"
}
}
}