未找到Gradle任务,但存在于任务列表中

时间:2018-10-09 13:29:11

标签: gradle android-gradle

我想为一个Android项目创建一个自定义的gradle任务,该任务会根据构建风格和构建配置来调用其他任务链。

因此,我在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任务

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

因此它们存在。但是,如果我尝试运行任何命令,都会收到下一个错误:

  
      
  • 出了什么问题:在根项目“ myproject-android”中找不到任务“ codeQualityDevMenuFlavor1Debug”。
  •   

1 个答案:

答案 0 :(得分:0)

我可以重现您的问题,并且我认为它已连接到按需配置执行模式,该模式似乎已在您的环境中启用。您可以尝试禁用此模式并重新测试吗? (在Android Studio中:File > Settings > Build, Execution, Deployment > Compiler:取消选中“按需配置”选项)。

启用此模式后,当您尝试执行已动态创建的任务时(例如:您的codeQuality *任务):Gradle将不会执行gradle.projectsEvaluated {}块:因此您将无法创建自定义任务,从而导致错误Task 'codeQualityDevMenuFlavor1Debug' not found

有关按需配置功能的更多信息,请参见Configuration on demandthis answer

Android Studio和此模式也存在一些已知问题,请参见:Configuration on demand is not supported by the current version of the Android Gradle plugin