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:

  1. 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?
  2. même question ci-dessus, mais pour les fichiers gradle/wrapper/* ( gradle-wrapper.jar et gradle-wrapper.properties )?
  3. Parfois je vois d'autres *.gradle dans le répertoire gradle du projet. Quels sont ces fichiers Gradles supplémentaires et que représentent-ils/font-ils? Des plugins personnalisés?
  4. 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 de gradle.properties ?
172
demandé sur smeeb 2014-09-10 19:36:07

6 réponses

  1. 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 fichier build.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.

  1. 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.

  2. 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.

  3. settings.gradle est plutôt responsable de la structure du projet (modules, noms, etc.), tandis que gradle.properties est utilisé pour "externe détails (version, arguments en ligne de commande -XX , propriétés etc.)

194
répondu Opal 2017-11-15 07:13:40

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.

25
répondu Cameron Lowell Palmer 2015-02-17 08:34:47

à 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.

15
répondu Craig Trader 2015-08-19 09:57:25

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")
}
8
répondu Geng Jiawen 2016-07-12 13:02:45

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.

2
répondu Shorn 2017-10-05 23:29:58
  1. 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 et gradlew.bat wrapper ainsi que gradle/wrapper/gradle-wrapper.properties et le gradle-wrapper.jar pour fournir la version actuelle de gradle, wrapped.

  2. ils font tous partie de l'emballage.

  3. 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.

  4. 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.

1
répondu dlamblin 2015-10-05 13:57:53