Включение подпроектов с использованием подстановочного знака в файле настроек Gradle.
Вопрос
В Gradle вам необходимо определить подпроекты, которые будут построены в файле settings.gradle.Чтобы создать три дочерних проекта, вы должны сделать что-то вроде этого:
include "child1", "child2", "child3"
Проблема, с которой я столкнулся, заключается в том, что мне нужно включить довольно много проектов.Есть ли способ использовать подстановочный знак в этом определении?Я ищу что-то вроде этого:
include "*"
Это, конечно, не работает.С этим было бы намного проще работать, поскольку мне нужно включить много подпроектов.Есть ли способ автоматически включать подкаталоги в проекты?
Решение
Можете ли вы сделать что-то вроде:
include (1..10).collect { "Child$it" }
Включить «Child1» до «Child10»?
Очевидно, вам нужно будет изменить сбор на какое-то сканирование папок, но если быстрый тест сработает, то у сканирования есть хорошие шансы.
Другие советы
include rootDir.listFiles().findAll {
it.isDirectory()
&& !( it =~ ".*/\\..*") // don't add directories starting with '.'
&& !( it =~ "^\\..*") // don't add directories starting with '.'
}.collect {
it.getName()
}.toArray(new java.lang.String[0])
Сделал трюк для меня
Следующий код поддерживает иерархию произвольной глубины:
rootDir.eachFileRecurse { f ->
if ( f.name == "build.gradle" ) {
String relativePath = f.parentFile.absolutePath - rootDir.absolutePath
String projectName = relativePath.replaceAll("[\\\\\\/]", ":")
include projectName
}
}