Incluindo subprojetos usando um curinga em um arquivo de configurações gradle
Pergunta
No gradle, você precisa definir subprojetos para serem incorporados em um arquivo 'Settings.gradle'. Para construir três projetos infantis, você faria algo assim:
include "child1", "child2", "child3"
O problema que estou tendo é que tenho alguns projetos para incluir. Existe uma maneira de usar um curinga nessa definição? Estou procurando algo assim:
include "*"
É claro que isso não funciona. Isso seria muito mais fácil de trabalhar, pois tenho muitos subprojetos para incluir. Existe uma maneira de incluir automaticamente os subdiretos como projetos?
Solução
Você pode fazer algo como:
include (1..10).collect { "Child$it" }
Para incluir "Child1" até "Child10"?
Obviamente, você precisaria alterar a coleta para algum tipo de digitalização de pastas, mas que o teste rápido funciona, então a verificação tem uma boa chance
Outras dicas
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])
Fez o truque para mim
O código a seguir suporta hierárquico da profundidade arbitrária:
rootDir.eachFileRecurse { f ->
if ( f.name == "build.gradle" ) {
String relativePath = f.parentFile.absolutePath - rootDir.absolutePath
String projectName = relativePath.replaceAll("[\\\\\\/]", ":")
include projectName
}
}