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