我想为 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”。
我可以重现您的问题,我认为它与按需配置执行模式有关,该模式似乎在您的环境中启用。您可以尝试禁用此模式并重新测试吗? (在 Android Studio 中:
File > Settings > Build, Execution, Deployment > Compiler
:取消选中“按需配置”选项)。
看起来当启用此模式时,并且当您尝试执行动态创建的任务(例如:您的
codeQuality
* 任务)时:Gradle 将不会执行 gradle.projectsEvaluated {}
块:所以在您的情况下您的自定义任务将不会被创建,导致错误Task 'codeQualityDevMenuFlavor1Debug' not found
Android Studio 和此模式也存在一些已知问题,请参阅:当前版本的 Android Gradle 插件不支持按需配置