Un projet multi-modules a un module principal et de nombreux sous-modules. Il a cette disposition :
(root)
+- settings.gradle
+- build.gradle # optional (commonly present)
+- gradle.properties # optional
+-- buildSrc/ # optional
| +- build.gradle
| +-- src/...
+-- my-gradle-stuff/ # optional
| +- utils.gradle # optional
+-- sub-a/
| +- build.gradle
| +- src/
+-- sub-b/
+- build.gradle
+- src/
Les submodules peuvent également être situés plus profondément dans des sous-dossiers, mais sans modifier le code dans settings.gradle, leur nom inclura le nom de ces dossiers.
paramètres.gradle
Le rôle principal de settings.gradle est de définir tous les sous-modules inclus et de marquer le répertoire Root d'une arborescence de modules, ainsi vous ne pouvez avoir qu'un seul settings.gradle
dans un projet multi-module.
rootProject.name = 'project-x'
include 'sub-a', 'sub-b'
Le fichier de configuration est également écrit en groovy, et la recherche de sous-modules peut être personnalisée.
build.gradle
Il y a un tel fichier par module, il contient la logique de construction pour ce module.
Dans le build.gradle
du fichier module principal vous pouvez utiliser allprojects {}
o subprojects {}
pour définir les paramètres de tous les autres modules.
Dans le build.gradle
des sous-modules, vous pouvez utiliser compile project(':sub-a')
pour qu'un sous-module dépende d'un autre.
gradle.properties
Cette option est facultative, son principal objectif est de fournir des options de démarrage à utiliser pour exécuter gradle lui-même, par ex.
org.gradle.jvmargs=-Xmx=... -Dfile.encoding=UTF-8 ...
org.gradle.configureondemand=true
Ces valeurs peuvent être remplacées par un fichier USER_HOME/.gradle/gradle.properties
et peuvent être remplacés par les arguments de la ligne de commande de Gradle. Il est également possible de définir des variables d'environnement pour la construction dans ce fichier en utilisant la commande systemProp.
comme préfixe.
Toute propriété de ce fichier peut être utilisée dans n'importe quel build.gradle, c'est pourquoi certains projets placent également des informations sur la version ou la version de la dépendance dans le fichier gradle.properties
mais c'est probablement un abus de ce fichier.
mon-gradle-stuff/utils.gradle
(Tout nom de dossier ou de fichier est possible). Vous pouvez définir des fichiers gradle personnalisés supplémentaires pour réutiliser les définitions, et les inclure dans d'autres fichiers gradle via
apply from: "$rootDir/gradle/utils.gradle"
d'autres endroits où mettre cela pourraient être src/gradle
o src/build/gradle
buildSrc/...
Ce dossier est spécial, il est comme un projet gradle distinct en soi. Il est construit avant toute autre chose, et peut fournir des fonctions à utiliser dans n'importe quel autre fichier gradle. Pour des raisons techniques, la prise en charge par l'IDE des références à ce dossier fonctionne bien mieux que tout autre moyen d'extraire du code commun de plusieurs build.gradle
dans un emplacement séparé.
Vous pouvez définir une logique de construction personnalisée complexe en java, groovy ou kotlin, au lieu d'écrire et de déployer un plugin. Ceci est également utile pour tester votre code de construction personnalisé, car vous pouvez avoir des tests unitaires. La structure du dossier source dans buildSrc
peut être adapté comme pour tout projet java/groovy/kotlin.