Лучший способ настроить задачу Gradle для всех проектов из проекта, на котором она запущена?

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

0 ответов

Другие вопросы по тегам