Ядро Gradle - это язык для программирования основанном на зависимостях: мы можем определять задачи и зависимости между ними.
Любой build.gradle скрипт делегирует свое тело в обьект project.
То есть
Кроме того, project умеет искать среди своих тасков, если идет обращение не к его предопределенным полям/методам. Из-за этого мы можем обращаться к таске так:
У обьекта project есть поле tasks, которое является списком, внутри которого все таски проекта.
Наиболее распространенный шаблон для создание простой таски, это создание и немедленная передача замыкания через оператор << в список действий doLast фазы;
Как можно было уже заметить, настраивать таску можно не через вызовы методов, а через замыкание настроек
Некоторые свойста мы можем установить через декларацию таски, но так мы можем установить не все
Любой build.gradle скрипт делегирует свое тело в обьект project.
То есть
task myTask1 << {}
По сути:
project.task("myTask1", { doLast {}})
А теперь плавный переход от последнего к первому, чтобы было понятно, как такое может быть. Шаг1
task("myTask1", { doLast {}})
Шаг2
task "myTask1" { doLast {}}
Шаг3
task myTask1 << doLast {}
Все по правилам груви + понимание того, что скрипт всегда выполняется в контексте глобального обьекта project.Кроме того, project умеет искать среди своих тасков, если идет обращение не к его предопределенным полям/методам. Из-за этого мы можем обращаться к таске так:
myTask.description="My description"
myTask.group="Some group"
myTask.doLast({println "Do it last"})
myTask.doFirst {println "Do it first"}
myTask.leftShift {println "Do this even more last"} //leftShift is a method in groovy Object which provides possibility to execute provided closure when applying operator << for instance of the class. Этот метод таски считается алиасом doLast.
myTask << {println "Do this last of all"} //leftShift can be also defined by opertor <<
Методы do* не перегружают предыдущие замыкания, а добавляют в очередь, которая выполняется по порядку.
У обьекта project есть поле tasks, которое является списком, внутри которого все таски проекта.
Наиболее распространенный шаблон для создание простой таски, это создание и немедленная передача замыкания через оператор << в список действий doLast фазы;
task myTask2 << {
println "Do it last"
}
Как можно было уже заметить, настраивать таску можно не через вызовы методов, а через замыкание настроек
task("myTask3", {
description "Some"//this calls setter setDescription("Some")
group="Some group"//this also callss setter, but we need always use = for collections
doLast({println "Do it last"})
doFirst {println "Do it first"}
leftShift {println "Do this even more last"}
})
Или же все по сахарному, как и должно это писаться:
task myTask3 {
description "Some"
group "Some group"
doLast {println "Do it last"}
doFirst {println "Do it first"}
leftShift {println "Do this even more last"}
}
Некоторые свойста мы можем установить через декларацию таски, но так мы можем установить не все
task myTask3(description: "Some") << {println "Do it last"}
Единственное где мы обязанны пользоваться, только такой установкой свойства, это типизированная таска.
Комментариев нет:
Отправить комментарий