Comment / quand générer des fichiers D'enrubannage Gradle?
j'essaie de comprendre comment fonctionne le papier D'emballage. Dans beaucoup de repos sources, 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:
- comment/quand génère-t-on
gradlew
/gradlew.bat
? Êtes-vous censé les générer une seule fois lors de la création du projet, est-ce que vous les générez à chaque fois que vous propagez des changements? Et comment sont-ils générés? - même question ci-dessus, mais pour les fichiers
gradle/wrapper/*
(gradle-wrapper.jar
etgradle-wrapper.properties
)? - Parfois je vois d'autres
*.gradle
dans le répertoiregradle
du projet. Quels sont ces fichiers Gradles supplémentaires et que représentent-ils/font-ils? Des plugins personnalisés? - Quelle est la différence entre les propriétés qui entrent dans
settings.gradle
et ce qui devrait être défini à l'intérieur degradle.properties
?
6 réponses
-
vous le produisez une fois, et encore quand vous souhaitez changer la version de Gradle que vous utilisez dans le projet. Il n'y a pas besoin de générer de l'est si souvent. ici sont les docs. Il suffit d'ajouter la tâche
wrapper
au fichierbuild.gradle
et d'exécuter cette tâche pour obtenir la structure d'enrubannage.N'oubliez pas que vous devez avoir Gradle installé pour générer une enveloppe. Excellent outil de gestion de l'écosystème g artefacts est SDKMAN! . Pour générer un emballage Grad, ajoutez le code suivant au fichier
build.gradle
:task wrapper(type: Wrapper) { gradleVersion = '2.0' //version required }
et courir:
gradle wrapper
de la tâche. Ajoutez les fichiers résultants à SCM (par exemple git) et à partir de maintenant tous les développeurs auront la même version de Gradle lorsqu'ils utiliseront Gradle Wrapper.
avec Gradle 2.4 ( ou plus) vous pouvez configurer un enveloppeur sans ajouter une 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 binaires et tous et bin . all contient en outre du code source et de la documentation. tous les est également meilleur quand IDE est utilisé, de sorte que l'éditeur fonctionne mieux. Inconvénient est l'accumulation peut durer plus longtemps (besoin de télécharger plus de données, inutile sur le serveur CI), et il faudra plus d'espace.
-
ce sont des fichiers D'enrubannage. Vous devez les générer une fois (pour une version particulière) et ajouter au contrôle de version. Si vous avez besoin de changer la version de Gradle Wrapper, changez la version dans
build.gradle
voir (1.) et de régénérer les fichiers. -
donner un exemple détaillé. Ce fichier peut avoir plusieurs objectifs: projet multi-modules, 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 quegradle.properties
est utilisé pour "externe détails (version, arguments en ligne de commande-XX
, propriétés etc.)
la Génération de la Gradle Wrapper
Projet de build gradle
// 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 Exécuter
gradle wrapper
si vous manquez gradle sur votre système l'installer ou le ci-dessus ne fonctionnera pas. Sur un Mac, il est préférable d'installer via Homebrew.
brew install gradle
après avoir exécuté avec succès la tâche wrapper et généré gradlew
, n'utilisez pas votre grille système. Il vous permettra d'économiser beaucoup de maux de tête.
./gradlew assemble
Qu'en est-il du plugin gradle vu ci-dessus?
com.android.tools.build:gradle:1.0.1
vous devez configurer la version pour être la plus récente et vous pouvez vérifier la page des outils et modifier la version en conséquence.
voir ce que produit Android Studio
l'ajout de gradle et le plus récent studio Android ont changé la mise en page du projet de façon spectaculaire. Si vous avez une ancienne projet je recommande fortement la création d'un propre avec le dernier studio Android et voir ce que Google considère le projet standard.
Android Studio a des facilités pour importer des projets plus anciens qui peuvent également aider.
à partir du Grad 2.4, Vous pouvez utiliser gradle wrapper --gradle-version X.X
pour configurer une version spécifique de L'enveloppe du Grad, sans ajouter de tâches à votre fichier build.gradle
. La prochaine fois que vous utilisez le wrapper, il téléchargera la distribution Gradle appropriée pour correspondre.
si vous voulez télécharger gradle avec source et docs, l'url de distribution par défaut configuré dans gradle-wrapper.les properites ne satisferont pas votre besoin.C'est https://services.gradle.org/distributions/gradle-2.10-bin.zip , pas https://services.gradle.org/distributions/gradle-2.10-all.zip .Cette url complète est suggérée par IDE tel que Android Studio.Si vous voulez télécharger le Grad complet,vous pouvez configurer la tâche wrapper comme ceci:
task wrapper(type: Wrapper) {
gradleVersion = '2.13'
distributionUrl = distributionUrl.replace("bin", "all")
}
c'est la commande à utiliser pour dire à Gradle de mettre à jour le wrapper de telle sorte qu'il va saisir les versions de distribution des bibliothèques qui inclut le code source:
./gradlew wrapper --gradle-version <version> --distribution-type all
en spécifiant le type de distribution avec " all " s'assurera que Gradle télécharge les fichiers source à utiliser par votre environnement de développement.
Pros :
- IDEs aura un accès immédiat au code source. Pour exemple, Intellij IDEA ne vous demandera pas de mettre à jour vos scripts de compilation pour inclure la distribution source (parce que cette commande l'a déjà fait)
Cons :
- Plus/Grand processus de construction parce que c'est le téléchargement du code source. Il s'agit d'une perte de temps/d'espace sur un serveur build ou CI où le code source n'est pas nécessaire.
veuillez commenter ou fournir une autre réponse si vous connaissez toute option de ligne de commande pour dire à Gradle de ne pas télécharger de sources sur un serveur de compilation.
-
vous allez les générer une fois, mais mettez-les à jour si vous avez besoin d'une nouvelle fonctionnalité ou quelque chose d'un plugin qui à son tour a besoin d'une nouvelle version gradle.
la façon la plus facile de mettre à jour: à partir de Gradle 2.2 vous pouvez simplement télécharger et extraire le distribution Gradle complète ou binaire et exécuter:
$ <pathToExpandedZip>/bin/gradle wrapper
pas besoin de définir une tâche, bien que vous ayez probablement besoin d'une sorte de fichier
build.gradle
.il s'agit de mettre à jour ou de créer le
gradlew
etgradlew.bat
wrapper ainsi quegradle/wrapper/gradle-wrapper.properties
et legradle-wrapper.jar
pour fournir la version actuelle de gradle, wrapped. -
ils font tous partie de l'emballage.
-
certains
build.gradle
font référence à d'autres fichiers ou fichiers dans des 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 seul 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 gradle si vous le souhaitez et vous sentez qu'ils seraient plus clairs de cette façon.