拥有build.gradle
task hello {
doLast {
println 'Hello World!'
}
}
task count {
println "one"
doLast{
4.times {print "$it "}
}
println "two"
doFirst{
2.times {println "$it - 1 "}
}
3.times {println( "$it -3")}
}
task intro(dependsOn: hello){
doLast{
println("I'm Gradle!")
}
}
在shell中运行
gradle intro
并获取
one
two
0 -3
1 -3
2 -3
:hello
Hello World!
:intro
I'm Gradle!
BUILD SUCCESSFUL
但它不正确! 正确的输出是
:hello
Hello World!
:intro
I'm Gradle!
BUILD SUCCESSFUL
我做错了什么?
PS 添加细节,因为这里有太多的代码:( 添加细节,因为这里有太多的代码:( 添加细节,因为这里有太多的代码:( 添加细节因为这里有太多代码:(
答案 0 :(得分:2)
为什么你认为这是错的?可能它绝对正确。这完全归功于构建的配置。请在official user guide。
中了解相关信息构建期间会发生多个阶段。其中之一是配置阶段。您不希望看到的所有输出 - 是配置的输出。当你在任务的闭包中执行某些操作时,它会在构建的配置中执行,直到你将它放入doLast
或doFirst
闭包中以在执行阶段运行(或者使用{{声明任务的闭包) 1}}与<<
相同。
请注意,无论是否执行任务,都会对所有任务执行配置。这就是您意外输出的原因 - 它只是作为构建配置的一部分完成的,尽管它们是在某个任务中声明的。