Incluyendo sub-proyectos utilizando un comodín en el archivo de configuración de un Gradle
Pregunta
En Gradle debe definir sub-proyectos que se construirán en un archivo 'settings.gradle'. Para construir tres proyectos niño, que haría algo como esto:
include "child1", "child2", "child3"
El problema que estoy teniendo es que tengo un buen número de proyectos a incluir. ¿Hay una manera de utilizar un comodín en esta definición? Estoy buscando algo como esto:
include "*"
Esto por supuesto no funciona. Esto sería mucho más fácil trabajar con ya que tengo muchos sub-proyectos a incluir. ¿Hay una manera de incluir automáticamente los subdirectorios como proyectos?
Solución
¿Se puede hacer algo como:
include (1..10).collect { "Child$it" }
Para incluir "Niño1" hasta "Niño10"?
Obviamente, que había necesidad de cambiar el cobro revertido a algún tipo de exploración de carpetas, pero esa prueba rápida funciona, entonces la exploración tiene una buena oportunidad
Otros consejos
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])
¿El truco para mí
Los siguientes soportes de código jerárquica de profundidad arbitraria:
rootDir.eachFileRecurse { f ->
if ( f.name == "build.gradle" ) {
String relativePath = f.parentFile.absolutePath - rootDir.absolutePath
String projectName = relativePath.replaceAll("[\\\\\\/]", ":")
include projectName
}
}