В корневом каталоге 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. Я понимаю, что нам придется вручную редактировать многие из них, но для этой задачи нам бы хотелось, чтобы корневая сборка внедрила задачу во все подпроекты, но только если они установили какой-либо флаг или что-то еще. Это даст нам гибкость, чтобы изменить задачу в будущем без необходимости редактирования сотен сборок. Пожалуйста, дайте мне знать, если я подхожу к этой задаче неправильно.
Задача ещё не решена.
Других решений пока нет …