Определение списка проектов, которые были запущены в Gradle.

У меня есть плагин настроек, который поддерживает несколько проектов. В настоящее время он применяется к каждому проекту, указанному в settings.gradle, Однако это проблема, потому что каждый подпроект не имеет одинаковую конфигурацию, и я контролирую поведение некоторых плагинов через свойства проекта, установленные в командной строке, с помощью -P,

Проблема заключается в том, что это не работает в проектах, которые не имеют конфигурации, необходимой для использования этого свойства, и я знаю известный способ применения свойства к определенному подпроекту через командную строку.

Вместо перебора settings.gradle.allprojectsЕсть ли способ узнать, какие проекты были включены в сборку? Например, когда я делаю:

gradle :subproject-name:build :other-subproject-name:build -PsomeProperty

Я хотел бы знать, что только subproject-name а также other-subproject-name были названы так, чтобы я мог применить плагин настроек только к этим проектам.

Или есть способ каким-то образом "охватить" свойства проекта только конкретным проектом?

1 ответ

... есть ли способ узнать, какие проекты были включены в сборку?

Это заблуждение. Все проекты являются частью сборки, когда settings.gradle включает их, и все они будут настроены так, чтобы они имели связанный Project,

Что вы в конечном итоге ищете, учитывая задачи, которые будут выполняться, каковы подпроекты, которым принадлежат эти задачи? Для этого вы можете получить график задач Gradle, и для всех задач, которые будут выполняться, найти проект, которому принадлежит каждая задача.

gradle.taskGraph.whenReady { graph ->
    def projects = graph.allTasks.collect { it.project }.toSet()
    projects.each {
        println "Project is being used in this build: " + it
    }
}
Другие вопросы по тегам