Определение списка проектов, которые были запущены в 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
}
}