在root build.gradle中,我们在所有项目下创建一个任务,该任务应该在构建运行任务的项目之前运行。
// 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个子构建。如果我以错误的方式处理这项任务,请告诉我。