在根 build.gradle 中,我们在 allprojects 下创建一个任务,该任务应该在运行该任务的项目的构建之前运行。
// root build
apply plugin: 'cpp'
all projects {
task.whenTaskAdded {theTask ->
if (theTask.name == "build") {
if (theTask.project.<runPreBuildTask?> == true) {
tasks.create(name: 'preBuildTask' + theTask.name) {
// do some stuff
}
theTask.dependsOn preBuildTask
}
}
}
// other stuff model, toolchains, repositories
}
// some sub project build
// :subProject:subSubProject
// no luck using ext properties
ext.set('subSubProjectDoPreBuild', 'true')
model{
components {
...
}
}
作为参考,我们有近 800 个子项目,它们的 build.gradle 由转换现有 make 文件的脚本自动生成。我意识到我们将不得不手动编辑其中的许多,但对于这个任务,我们希望根构建将任务注入所有子项目,但前提是它们有一些标志或设置了一些东西。这将使我们能够灵活地在未来更改任务,而无需编辑 100 个子构建。如果我以错误的方式处理此任务,请告诉我。