2010-02-19 5 views
3

Dans Gradle, vous devez définir les sous-projets à construire dans un fichier 'settings.gradle'. Pour construire trois projets enfants, vous feriez quelque chose comme ceci:Inclure les sous-projets utilisant un caractère générique dans un fichier de paramètres Gradle

include "child1", "child2", "child3" 

Le problème que je vais avoir est que j'ai assez peu de projets à inclure. Existe-t-il un moyen d'utiliser un caractère générique dans cette définition? Je cherche quelque chose comme ceci:

include "*" 

Cela ne fonctionne bien sûr pas. Ce serait beaucoup plus facile de travailler avec car j'ai beaucoup de sous-projets à inclure. Est-il possible d'inclure automatiquement des sous-répertoires en tant que projets?

Répondre

1

Pouvez-vous faire quelque chose comme:

include (1..10).collect { "Child$it" } 

Pour inclure "Enfant1" jusqu'à "enfant10"?

De toute évidence, vous aurez besoin de changer la collecte à une sorte de balayage de dossier, mais ce test rapide fonctionne alors le scan a une bonne chance

+0

"child1" et "child2" wer e juste pour l'exemple. Les vrais noms des projets n'ont pas de nombres en eux. J'espérais qu'il y avait une fonctionnalité intégrée pour cela sans avoir recours à la liste des fichiers dans le répertoire, mais je suppose que peut-être pas. –

+1

Est-ce que inclut le nouveau fichier ('.') .listFiles(). FindAll {it.isDirectory()} .collect {it.name} work? –

4

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]) 

a fait l'affaire pour moi

0

Le code suivant prend en charge hiérarchique de profondeur arbitraire:

rootDir.eachFileRecurse { f -> 
    if (f.name == "build.gradle") { 
     String relativePath = f.parentFile.absolutePath - rootDir.absolutePath 
     String projectName = relativePath.replaceAll("[\\\\\\/]", ":") 
     include projectName 
    } 
} 
Questions connexes