Y compris les sous-projets en utilisant un caractère générique dans un fichier de paramètres Gradle
Question
Dans Gradle vous devez définir des sous-projets à construire dans un fichier « settings.gradle ». Pour construire trois projets enfants, vous feriez quelque chose comme ceci:
include "child1", "child2", "child3"
Le problème que je vais avoir est que j'ai assez peu de projets à inclure. Est-il possible d'utiliser un joker dans cette définition? Je cherche quelque chose comme ceci:
include "*"
Ce bien sûr ne fonctionne pas. Ce serait beaucoup plus facile de travailler avec depuis que j'ai beaucoup sous-projets à inclure. Y at-il un moyen d'inclure automatiquement les sous-répertoires comme des projets?
La solution
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
Autres conseils
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])
Est-ce que le truc pour moi
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
}
}