在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 添加详细信息,因为这里的代码太多:( 添加详细信息,因为这里的代码太多:( 添加详细信息,因为这里的代码太多:( 添加详细信息,因为这里代码太多:(
最佳答案
为什么你认为这是错误的?也许这是绝对正确的。这都是由于构建的配置造成的。在 official user guide 中阅读相关内容.
构建过程中会发生多个阶段。其中之一是配置阶段。您不希望看到的所有输出都是配置的输出。当您在任务关闭中执行某些操作时,它将在构建的配置中执行,直到您将其放入 doLast
中。或doFirst
在执行阶段运行的闭包(或者使用 <<
声明任务的闭包,与 doLast
相同)。
请注意,所有任务都会执行配置,无论它们是否会执行。这就是您意外输出的原因 - 它只是作为构建配置的一部分完成,尽管它们是在某些任务中声明的。
关于Gradle:需要帮助才能理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40675869/