Я пытаюсь улучшить производительность наших сборок Gradle и обнаружил API-интерфейс предотвращения конфигурации задачи Gradle (https://docs.gradle.org/current/userguide/task_configuration_avoidance.html).). Он позволяет отложить создание и настройку задачи, если она действительно не нужна. Это может сэкономитьмного времени запуска и, как мы называем Gradle несколько раз во время сборки, это может привести к значительной экономии времени.
Мы разработали несколько плагинов для внутреннего использования, и я приложил усилия, чтобы изменить способ определения задач дляизбегать создания, когда в нем нет необходимости. Я хочу проверить, успешны ли мои изменения и отложено ли создание экземпляра задачи.
Простой пример создания задачи без ее создания:
class MyTask extends DefaultTask {
}
TaskProvider customTask = tasks.register("customAction", MyTask) {
println "task configured!" // configuration time output
doLast {
println "action 1!" // execution time output
}
}
// configuration like this avoids task instantiation
tasks.named("customAction") {
doLast {
println "action 2!"
}
}
tasks.withType(MyTask).configureEach {
doLast {
println "action 3!"
}
}
Выполнениеgradle help
не печатает сообщение «задача настроена!», В то время как gradle customAction
делает.
Чтобы убедиться, что я случайно не запускаю экземпляр задачи, я хотел бы написать тесты для наших плагинов. Но я мог быНе могу найти способ определить, была ли задана задача или нет.
Я знаю о Буild Scans (https://guides.gradle.org/creating-build-scans/),, но наши корпоративные правила строги, и оформление еще не завершено, поэтому я пока не могу его использовать.Кроме того, я не вижу способа использовать его в тестах.
Есть ли способ
- получить список созданных / созданных задач из проекта Gradle?
- или на Task или TaskProvider есть какое-либо свойство, показывающее, была ли задача создана / создана?
- или можно как-то использовать сканирование сборки в автономном режиме?
Было бы круто,если решение может быть использовано в тестовом коде плагина, но ручная оценка также будет полезна.