我对gradle文件中任务和方法的执行顺序感到困惑。 我有下面的gradle脚本
task Hello {
doFirst{
println "Hello First"
if(sayHello()) {
tasks['World'].execute()
}
}
doLast{
println "Hello Last"
}
}
task World {
doFirst{
println "World First"
}
doLast{
println "World Last"
}
}
def sayHello(){
println "Hello from sayHello"
return false
}
当我在命令行上运行gradle Hello
时,它显示在下面的输出-
C:\> gradle Hello
> Task :Hello
Hello First
Hello from sayHello
Hello Last
这是可以预期的,因为sayHello()方法返回false并且没有执行World任务。
sayHello()方法返回true时,我感到困惑。输出-
C:\> gradle Hello
> Task :World
World First
World Last
> Task :Hello
Hello First
Hello from sayHello
Hello Last
但是我期待这样的事情-
C:\> gradle Hello
> Task :Hello
Hello First
Hello from sayHello
> Task :World
World First
World Last
Hello Last
我读到的另一件事是我们不应该对任务使用执行。
在不使用对任务执行的情况下,可以实现类似逻辑的其他方法有哪些?
我了解了dependsOn,但是我们可以在dependsOn上添加条件,以便在某个标志为true / false时执行该条件吗?
我想将逻辑检查部分提取到方法中,因为它会在许多地方使用,并且我不想一次又一次地在每个任务中编写相同的逻辑。
可以从gradle任务中调用方法吗?还是不建议这样做?如果没有,实现相同目标的其他方法是什么?