J'essaie de comprendre comment fonctionne le Gradle Wrapper. Dans de nombreux dépôts source, je vois la structure suivante:
projectRoot/
src/
build.gradle
gradle.properties
settings.gradle
gradlew
gradlew.bat
gradle/
wrapper/
gradle-wrapper.jar
gradle-wrapper.properties
Mes questions:
gradlew
/gradlew.bat
? Êtes-vous censé les générer une seule fois lorsque le projet est créé, les générez-vous chaque fois que vous validez/modifiez des modifications? Et comment sont-ils générés?gradle/wrapper/*
(gradle-wrapper.jar
et gradle-wrapper.properties
)?*.gradle
dans le répertoire gradle
du projet. Quels sont ces fichiers Gradle supplémentaires et que représentent-ils/font-ils? Plugins personnalisés?settings.gradle
par rapport à ce qui devrait être défini à l'intérieur de gradle.properties
?Vous le générez une fois, puis à nouveau lorsque vous souhaitez modifier la version de Gradle que vous utilisez dans le projet. Il n'y a pas besoin de générer est si souvent. Ici sont les documents. Ajoutez simplement la tâche wrapper
au fichier build.gradle
et exécutez cette tâche pour obtenir la structure du wrapper.
Notez que vous devez avoir Gradle installé pour générer un wrapper. Un excellent outil pour gérer les artefacts de g-écosystème est SDKMAN! . Pour générer un wrapper de niveaux, ajoutez le code suivant au fichier build.gradle
:
task wrapper(type: Wrapper) {
gradleVersion = '2.0' //version required
}
et courir:
gradle wrapper
tâche. Ajoutez les fichiers obtenus à SCM (par exemple, git) et désormais, tous les développeurs disposeront de la même version de Gradle lors de l’utilisation de Gradle Wrapper.
Avec Gradle 2.4 (ou supérieur), vous pouvez configurer un wrapper sans ajouter de tâche dédiée:
gradle wrapper --gradle-version 2.3
ou
gradle wrapper --gradle-distribution-url https://myEnterpriseRepository:7070/gradle/distributions/gradle-2.3-bin.Zip
Tous les détails peuvent être trouvés ici
De Gradle 3.1
--distribution-type
option peut également être utilisé. Les options sont binaires et all et bin . all contient en plus du code source et de la documentation. all est également meilleur lorsque IDE est utilisé, et que l'éditeur fonctionne mieux. L'inconvénient est que la construction peut durer plus longtemps (nécessité de télécharger plus de données, inutile sur le serveur CI) et cela prendra plus d'espace.
Ce sont des fichiers Gradle Wrapper. Vous devez les générer une fois (pour une version particulière) et les ajouter au contrôle de version. Si vous devez changer la version de Gradle Wrapper, changez la version dans build.gradle
see (1.) et régénérez les fichiers.
Donnez un exemple détaillé. Ce fichier peut avoir plusieurs objectifs: projet multi-module, séparation des responsabilités, script légèrement modifié, etc.
settings.gradle
est plutôt responsable de la structure du projet (modules, noms, etc.), tandis que gradle.properties
est utilisé pour les détails externes du projet et de Gradle (version). , arguments de ligne de commande -XX
, propriétés, etc.)
// Top-level build file where you can add configuration options common to all sub-projects/modules.
// Running 'gradle wrapper' will generate gradlew - Getting gradle wrapper working and using it will save you a lot of pain.
task wrapper(type: Wrapper) {
gradleVersion = '2.2'
}
// Look Google doesn't use Maven Central, they use jcenter now.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:1.0.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
Puis à la ligne de commande
gradle wrapper
Si vous manquez Gradle sur votre système, installez-le ou ce qui précède ne fonctionnera pas. Sur un Mac, il est préférable d’installer via Homebrew.
brew install gradle
Une fois que vous avez exécuté la tâche d'encapsuleur et généré gradlew
, n'utilisez pas votre dégradé système. Cela vous évitera beaucoup de maux de tête.
./gradlew assemble
com.Android.tools.build:gradle:1.0.1
Vous devez définir la version la plus récente et vous pouvez consulter la page des outils et modifier la version en conséquence.
L'ajout de gradle et du dernier Android Studio a considérablement modifié la disposition du projet. Si vous avez un projet plus ancien, je vous recommande vivement de créer un projet propre avec le dernier Android Studio et de voir ce que Google considère comme le projet standard.
Android Studio dispose de fonctionnalités pour importer des projets plus anciens qui peuvent également aider.
À partir de Gradle 2.4, vous pouvez utiliser gradle wrapper --gradle-version X.X
pour configurer une version spécifique de l'encapsuleur Gradle, sans ajouter de tâches à votre fichier build.gradle
. La prochaine fois que vous utiliserez l'encapsuleur, il téléchargera la distribution Gradle appropriée.
Si vous souhaitez télécharger gradle avec source et docs, l'URL de distribution par défaut configurée dans gradle-wrapper.properites ne répondra pas à vos besoins. C'est https://services.gradle.org/distributions/gradle-2.10-bin. Zip , not https://services.gradle.org/distributions/gradle-2.10-all.Zip . Cette URL complète est suggérée par IDE, telle que Android. _ Studio.Si vous souhaitez télécharger la version complète, vous pouvez configurer la tâche d'emballage comme ceci:
task wrapper(type: Wrapper) {
gradleVersion = '2.13'
distributionUrl = distributionUrl.replace("bin", "all")
}
Il s'agit de la commande à utiliser pour indiquer à Gradle de mettre à niveau le wrapper de telle sorte qu'il récupère les versions de distribution des bibliothèques qui incluent le code source:
./gradlew wrapper --gradle-version <version> --distribution-type all
Si vous spécifiez le type de distribution avec "all", Gradle téléchargera les fichiers source à utiliser par votre environnement de développement.
Pros:
inconvénients:
Veuillez commenter ou fournir une autre réponse si vous connaissez une option de la ligne de commande pour dire à Gradle de ne pas télécharger les sources sur un serveur de compilation.
Vous ne les générerez qu'une fois, mais vous les mettrez à jour si vous avez besoin d'une nouvelle fonctionnalité ou d'un plugin nécessitant une version plus récente de Gradle.
Meilleure façon de mettre à jour: à partir de la version 2.2 de Gradle, vous pouvez simplement télécharger et extraire la version complète ou binaire distribution de Gradle , et exécuter:
$ <pathToExpandedZip>/bin/gradle wrapper
Nul besoin de définir une tâche, bien que vous ayez probablement besoin d’une sorte de fichier build.gradle
.
Ceci mettra à jour ou créera le wrapper gradlew
et gradlew.bat
ainsi que gradle/wrapper/gradle-wrapper.properties
et le gradle-wrapper.jar
pour fournir la version actuelle de gradle, encapsulée.
Ceux-ci font tous partie de l'emballage.
Certains fichiers build.gradle
font référence à d'autres fichiers ou à des fichiers de sous-répertoires qui sont des sous-projets ou des modules. Cela devient un peu compliqué, mais si vous avez un projet, vous avez essentiellement besoin d’un fichier.
settings.gradle
gère le projet, le module et d'autres types de noms et de paramètres. gradle.properties
configure les variables réutilisables pour vos fichiers de niveaux si vous le souhaitez et si vous estimez qu'ils seraient plus clairs de cette façon.