Compreso sottoprogetti utilizzando un carattere jolly in un file di impostazioni Gradle
Domanda
In Gradle è necessario definire sottoprogetti per essere costruito in un file 'settings.gradle'. Per costruire tre progetti figlio, si potrebbe fare qualcosa di simile:
include "child1", "child2", "child3"
Il problema che sto avendo è che ho un bel paio di progetti da includere. C'è un modo per utilizzare un carattere jolly in questa definizione? Sto cercando qualcosa di simile:
include "*"
Che ovviamente non funziona. Questo sarebbe molto più facile lavorare con poiché ho molti sottoprogetti da includere. C'è un modo per includere automaticamente le sottodirectory come progetti?
Soluzione
Si può fare qualcosa di simile:
include (1..10).collect { "Child$it" }
Per includere "Child1" fino a "Child10"?
Ovviamente, avresti bisogno di cambiare la colletta a una sorta di scansione della cartella, ma che test rapido funziona allora la scansione ha una buona probabilità
Altri suggerimenti
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])
Ha fatto il trucco per me
Il codice seguente supporta gerarchica di profondità arbitraria:
rootDir.eachFileRecurse { f ->
if ( f.name == "build.gradle" ) {
String relativePath = f.parentFile.absolutePath - rootDir.absolutePath
String projectName = relativePath.replaceAll("[\\\\\\/]", ":")
include projectName
}
}