Задача Gradle не найдена, но существует в списке задач - PullRequest
0 голосов
/ 09 октября 2018

Я хочу создать пользовательскую задачу gradle для проекта Android, которая будет вызывать цепочку других задач, зависит от вида сборки и конфигурации сборки.

Итак, то, что я делаю в моем build.gradle.kts(мы используем скрипт kotlin)

gradle.projectsEvaluated {
    rootProject.allprojects.filter { project ->
        !Config.CodeQuality.ignoredProjects.contains(project.name)
    }.forEach { project ->
        project.tasks.filter { task ->
            task.name.startsWith("lint")
        }.forEach { task ->
            val taskSyfix = task.name.drop(4)
            val taskName = "codeQuality$taskSyfix"
            println("qualityscripts create task $taskName")
            project.tasks.create(taskName) {
                group = "verification"
                dependsOn("checkstyle", "deteltCkeck", "ktlint", task.name)
            }
        }
    }
}

Так, чем, если я запускаю ./gradlew tasks

...
Verification tasks
------------------ 
check - Runs all checks. checkstyle - Runs checkstyle. 
codeQuality 
codeQualityDebug 
codeQualityDevMenuFlavor1Debug
codeQualityDevMenuFlavor1Release 
codeQualityDevMenuFlavor2Debug
codeQualityDevMenuFlavor2Release 
...

Так что они существуют.Но затем, если я пытаюсь запустить какой-либо из них, я получаю следующую ошибку:

  • Что пошло не так: Задача 'codeQualityDevMenuFlavor1Debug' не найдена в корневом проекте 'myproject-android'.

1 Ответ

0 голосов
/ 10 октября 2018

Я могу воспроизвести вашу проблему, и я думаю, что она связана с Конфигурацией по требованию режимом выполнения, который, кажется, включен в вашей среде.Не могли бы вы попытаться отключить этот режим и провести повторную проверку?(в Android Studio: File > Settings > Build, Execution, Deployment > Compiler: снимите флажок «настроить по требованию»).

Похоже, когда этот режим включен, и когда вы пытаетесь выполнить задачу, которая была создана динамически (например: ваши codeQuality* задачи): Gradle не будет выполнять блок gradle.projectsEvaluated {}: такв вашем случае ваши пользовательские задачи не будут созданы, вызывая ошибку Task 'codeQualityDevMenuFlavor1Debug' not found

См. Конфигурация по требованию , а также этот ответ для получения дополнительной информации о Настройка по требованию * функция 1016 *.

Есть также некоторые известные проблемы с Android Studio и этим режимом, см .: Конфигурация по требованию не поддерживается текущей версией плагина Android Gradle

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