Pourquoi les Gradle Wrapper être engagé pour la CV?
De Gradle de la documentation: https://docs.gradle.org/current/dsl/org.gradle.api.tasks.wrapper.Wrapper.html
Les scripts générés par cette tâche sont destinées à être commises à
votre système de contrôle de version. Cette tâche génère également un petit
gradle-wrapper.jar bootstrap fichier JAR et des fichiers de propriétés qui devrait
également être engagée à votre CV. Les scripts délégués à ce POT.
À partir de: Ce qui ne doit PAS être sous contrôle de code source?
Je pense que Generated files
ne devrait pas être dans les VCS.
Quand gradlew
et gradle/gradle-wrapper.jar
nécessaire?
Pourquoi ne pas stocker un gradle version
dans le build.gradle
fichier?
- Ce qui pourrait être intéressant de discussion, étant donné les réponses ci-dessous, l'utilité de ces fichiers si vous utilisez une certaine forme de l'outil d'intégration continue. Ceux qui vérifiera pour le grade-wrapper et de l'utiliser si elle est là?
Vous devez vous connecter pour publier un commentaire.
Parce que le point de l'ensemble de la gradle wrapper est d'être en mesure, sans jamais avoir installé gradle, et sans même savoir comment il fonctionne, d'où le télécharger à partir d', la version, pour cloner le projet de la cité du vatican, pour exécuter la gradlew script qu'il contient, et de construire le projet, sans aucune étape supplémentaire.
Si tout ce que vous aviez était un gradle numéro de version dans un build.gradle fichier, vous avez besoin d'une README expliquant à tout le monde que gradle version X qui doit être téléchargé à partir de l'URL, Y et installé, et que vous auriez à faire à chaque fois le numéro de version est incrémenté.
Même argument vaut pour le JDK, voulez-vous vous engager à ce que également? Avez-vous aussi de valider l'ensemble de votre dependencie bibliothèques?
Les dépendances doivent être mis à jour en continu à mesure que de nouvelles versions sont publiées. Pour obtenir de sécurité et d'autres corrections de bugs. Et parce que si vous obtenez loin derrière, il peut être une tâche qui prend du temps à mettre à jour à nouveau.
Si le gradle wrapper est incrémenté à chaque nouvelle version, et il est engagé, l'opération va devenir très volumineux. Le problème est évident lorsque vous travaillez avec des VCS distribués où un clone va télécharger toutes les versions de tout.
Créer un script qui télécharge l'emballage et l'utilise pour construire. Tout le monde n'a pas besoin de savoir comment le script fonctionne, il faut qu'ils acceptent que le projet est de construire, en l'exécutant.
Et puis
À télécharger la version correcte.
Résolu en suivant les étapes ci-dessus. Le téléchargement du gradle wrapper n'est pas différent de téléchargement de toutes les autres dépendances. Le script pourrait être intelligent enaugh de vérifier pour la gradle wrapper et télécharger seulement si il existe une nouvelle version.
Si le développeur n'a jamais utilisé Gradle avant et peut-être de ne pas savoir le projet est de construire avec Gradle. Alors ses plus évident pour exécuter une build.sh" par rapport à la course "gradlew build".
Non, vous n'auriez pas besoin d'un fichier README. Vous pourriez avoir un, mais nous sommes des développeurs et nous devrions automatiser autant que possible. Création d'un script, c'est mieux.
Si les développeurs d'accord que le processus correct est:
Puis il y a la mise à niveau vers la dernière gradle wrapper est pas un problème. Si la version est incrémenté depuis la dernière exécution, le script pourrait télécharger la nouvelle version.
build.gradle
dans le contrôle de version et dans ce que vous avez:task wrapper(type: Wrapper) { gradleVersion = 'X.X' }
Puisgradle wrapper
télécharger le wrapper qui a été utilisé, et vous pouvez reproduire l'ancien construire.gradle wrapper
après clone à chaque génération? De ce fait, fondamentalement, wrapper inutile, parce que son point est que vous ne pas avoir à installer de Gradle localement pour construire le projet!wrapper
au lieu detask wrapper(type: Wrapper)
. Voir cette réponse pour plus de détails.Je tiens à recommander une approche simple.
Dans votre projet README, document qu'une étape de l'installation est nécessaire, à savoir:
Cela fonctionne avec Gradle 2.4 ou supérieur. Cela crée un wrapper sans nécessiter un groupe de travail dédié à ajouter de construire".gradle".
Avec cette option, ignorer (ne pas cocher) ces fichiers/dossiers pour le contrôle de version:
Le principal avantage est que vous n'avez pas à l'enregistrement d'un fichier téléchargé à la source de contrôle. Il coûte une étape supplémentaire lors de l'installation. Je pense qu'il en vaut la peine.
gradlew
. @edio vous aurez besoin de télécharger et d'utiliser un certains version de gradle.Qu'est-ce que le "projet"?
Peut-être existe une définition technique de cet idiome, qui exclut les scripts de compilation. Mais si nous acceptons cette définition, nous devons dire que votre "projet" n'est pas toutes les choses que vous devez versionnées!
Mais si nous disons "votre projet" est tout vous ont fait. Alors on peut dire que vous devez inclure elle et seulement elle dans les CV.
C'est très théorique et peut-être pas pratique dans le cas de nos travaux de développement. Nous avons donc changer pour "votre projet est chaque fichier (ou un dossier), vous devez éditer directement".
"directement" signifie "indirectement" et "indirectement" signifie par l'édition d'un autre fichier, puis l'effet sera pris en compte dans ce fichier.
Si nous arrivons à la même que l'OP a dit (et il est dit ici):
Oui. Parce que vous n'avais pas créé eux. Donc ils ne font pas partie de "votre projet", selon la deuxième définition.
Quel est le résultat sur ces fichiers:
construire.gradle: Oui. Nous avons besoin de la modifier. Nos travaux devraient être versionnés.
Remarque: Il n'y a pas de différence lorsque vous la modifiez. Que ce soit dans votre éditeur de texte ou dans les Structure de Projet GUI environnement. De toute façon vous faire directement!
gradle-wrapper.propriétés: Oui. Nous avons besoin d'au moins de déterminer Gradle version de ce fichier.
gradle-wrapper.jar et gradlew[.bat]: je n'ai pas créé ou modifié dans aucun de mes travaux de développement, jusqu'à ce moment! Si la réponse est "Non". Si vous l'avez fait, la réponse est "Oui" à propos de vous à ce travail (et sur le même fichier que vous avez modifié).
La remarque importante à propos de ce dernier cas est l'utilisateur qui les clones de votre dépôt, doit exécuter cette commande sur pensions du
<root-directory>
à auto-générer wrapper fichiers:$v
et$distType
sont déterminées à partir de gradle-wrapper.propriétés:Voir https://gradle.org/install/ pour plus d'informations.
gradle
exécutable estbin/gradle[.bat]
dans la distribution locale. Il n'est pas nécessaire que la distribution locale être la même que celle déterminée dans le repo. Après wrapper fichiers créé puisgradlew[.bat]
pouvez télécharger déterminé Gradle distribution automatiquement (si elle n'existe pas localement). Puis il/elle a probablement besoin de se régénérer wrapper de fichiers à l'aide de nouvellesgradle
exécutable (dans téléchargés distribution) en utilisant les instructions ci-dessus.Note: Dans les instructions ci-dessus, supposé que l'utilisateur a au moins un Gradle distribution localement (par exemple
~/.gradle/wrapper/dists/gradle-4.10-bin/bg6py687nqv2mbe6e1hdtk57h/gradle-4.10
). Il couvre la quasi-totalité des cas réels. Mais ce qui se passe si l'utilisateur n'a pas de distribution déjà?Il/Elle peut le télécharger manuellement à l'aide de l'URL dans
.properties
fichier. Mais si il/elle ne localise pas dans le chemin que le wrapper prévu, la wrapper sera le télécharger encore une fois! La trajectoire prévue est tout à fait prévisible, mais il est l'objet (voir ici pour la partie la plus complexe).Il y a aussi quelques plus facile (mais sale) les moyens. Par exemple, il/elle peut copier wrapper fichiers (sauf
.properties
fichier) à partir de tout autre local/dépôt distant à son référentiel, puis exécutezgradlew
sur son référentiel. Il va automatiquement télécharger la distribution adapté.