多项目构建:在任何项目构建之前执行一项任务

Rol*_*ier 4 android build gradle

在多项目 Android 构建中,例如

root +--- build.gradle +--- settings.gradle +--- subproject1 \--- build.gradle \--- subproject2 \--- build.gradle

我想在任何项目 ( subproject1subproject2) 构建之前执行一个生成代码的任务。代码生成任务对于所有项目都只有一次。我想把它放到根目录下build.gradle。同样在根中build.gradle,所有项目 ( allprojects) 都依赖于代码生成任务。

task code_generating_task << {
  println "I generate code here"
}
preBuild.dependsOn code_generating_task
Run Code Online (Sandbox Code Playgroud)

不起作用,因为 preBuild 未在 root 中定义build.gradle

M.R*_*uti 5

可以像您一样直接在根项目的构建脚本中声明公共/横向任务。为了在每个子项目的preBuild任务和此公共code_generating_task任务之间创建依赖关系,您可以在根项目构建脚本中编写以下块:

gradle.projectsEvaluated {
    subprojects{
        // TODO : add a check on 'preBuild' task existence in this subproject.
        preBuild.dependsOn code_generating_task
    }
}
Run Code Online (Sandbox Code Playgroud)