Как определить, была ли создана задача Gradle (API предотвращения конфигурации) - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь улучшить производительность наших сборок 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 есть какое-либо свойство, показывающее, была ли задача создана / создана?
  • или можно как-то использовать сканирование сборки в автономном режиме?

Было бы круто,если решение может быть использовано в тестовом коде плагина, но ручная оценка также будет полезна.

...