Une construction à trois fichiers
build.gradle
qui définit les scripts de configuration de constructiongradle.properties
settings.gradle
Questions
settings.gradle
& gradle.properties
?settings.gradle
vs. gradle.properties
?settings.gradle
Le fichier settings.gradle
est un script Groovy, tout comme le fichier build.gradle
. Un seul script settings.gradle
sera exécuté dans chaque version (par rapport à plusieurs scripts build.gradle
dans des versions multi-projets). Le script settings.gradle
sera exécuté avant tout script build.gradle
et même avant la création des instances Project
. Par conséquent, il est évalué par rapport à un objet Settings
. Avec cet objet Settings
, vous pouvez ajouter des sous-projets à votre construction, modifier les paramètres à partir de la ligne de commande ( StartParameter
) et accéder à Gradle
objet pour enregistrer les gestionnaires de cycle de vie. Par conséquent, utilisez settings.gradle
si vos paramètres sont liés à la construction et ne sont pas nécessairement liés au projet ou nécessitent une logique avant que des possibles projets soient inclus.
gradle.properties
Le fichier gradle.properties
est un simple fichier Java Properties
qui n'obtient un rôle spécial que s'il est automatiquement inclus dans la portée de l'objet Project
(comme "propriétés du projet"). C'est un simple magasin clé-valeur qui n'autorise que les valeurs de chaîne (vous devez donc scinder vous-même des listes ou des tableaux). Vous pouvez mettre les fichiers gradle.properties
à ces emplacements:
.gradle
(pour les valeurs liées à l'utilisateur ou à l'environnement)Un projet multi-module a n module principal et de nombreux sous-modules. Il a cette disposition:
(root)
+- settings.gradle
+- build.gradle
+- gradle.properties # optional
+-- buildSrc/ # optional
| +- build.gradle # optional
| +-- src/ # optional
| +-- test/ # optional
+-- gradle/ # optional
| +- utils.gradle # optional
+-- sub-a/
| +- build.gradle
| +- src/
+-- sub-b/
+- build.gradle
+- src/
les sous-modules peuvent également être situés plus profondément dans les sous-dossiers, mais sans modifier le code dans settings.gradle, leur nom inclura le nom de tels dossiers.
Le rôle principal de settings.gradle est de définir tous les sous-modules inclus et de marquer le répertoire racine d'une arborescence de modules afin que vous ne puissiez avoir qu'un seul fichier settings.gradle
dans un projet multi-module.
rootProject.name = 'project-x'
include 'sub-a', 'sub-b'
Le fichier de paramètres est également écrit en groovy et la recherche de sous-modules peut être personnalisée.
Il y a un tel fichier par module, il contient la logique de construction de ce module.
Dans le fichier build.gradle
du module principal, vous pouvez utiliser allprojects {}
ou subprojects {}
pour définir les paramètres de tous les autres modules.
Dans le fichier build.gradle
des sous-modules, vous pouvez utiliser compile project(':sub-a')
pour créer un sous-module dépendant de l’autre.
Ceci est facultatif, son objectif principal est de fournir les options de démarrage à utiliser pour exécuter gradle lui-même, par exemple.
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 remplacées par des arguments de ligne de commande gradle. Il est également possible de définir des variables d’environnement pour la construction de ce fichier en utilisant systemProp.
comme préfixe.
N'importe quelle propriété de ce fichier peut être utilisée dans n'importe quel build.gradle. Par conséquent, certains projets placent également des informations de version ou de version de dépendance dans gradle.properties
, mais il s'agit probablement d'un abus de ce fichier.
(Tout nom de dossier ou de fichier est possible.) Vous pouvez définir d’autres fichiers de dégradés personnalisés pour réutiliser les définitions, et les inclure dans d’autres fichiers de dégradés via
apply from: "$rootDir/gradle/utils.gradle"
Ce dossier est spécial, c'est comme un projet de gradé séparé en lui-même. Il est construit avant de faire quoi que ce soit d’autre et peut fournir une fonction à utiliser dans n’importe quel autre fichier gradle. Pour des raisons techniques, IDE la prise en charge des références à ce dossier fonctionne beaucoup mieux que toute autre méthode d'extraction du code courant de plusieurs fichiers build.gradle
dans un emplacement distinct. Vous peut 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.