gradle中任务和方法的执行顺序

时间:2018-11-23 08:48:57

标签: gradle

我对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任务中调用方法吗?还是不建议这样做?如果没有,实现相同目标的其他方法是什么?

0 个答案:

没有答案