порядок выполнения задач и методов в gradle - PullRequest
0 голосов
/ 23 ноября 2018

Я немного смущен порядком выполнения задач и методов в файле 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           

Еще одна вещь, которую я прочитал, - мы не должны использовать execute для задач.

Что такое другиеспособы, которыми мы можем реализовать аналогичную логику, не используя выполнить задачу?

Я читал о depenOn, но можем ли мы добавить условие для depenOn, чтобы оно выполнялось, когда какой-либо флаг имеет значение true / false?

Я хочу извлечь часть проверки логики в метод так, как это было быиспользоваться во многих местах, и я не хочу снова и снова писать одну и ту же логику в каждой задаче.

Можно ли вызывать методы из заданий gradle или это не рекомендуется?Если нет, то какие еще могут быть способы достичь того же?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...