web-dev-qa-db-fra.com

Comment mettre à jour les dépendances Gradle vers leur dernière version

Existe-t-il un moyen facile d'obtenir gradle pour mettre à jour les dépendances vers leur dernière version disponible?

Pour la reproductibilité de la construction, toutes mes dépendances sont définies avec un numéro de version comme celui-ci dans mon fichier build.gradle:

dependencies {
    compile 'namespace:package1:version'
    compile 'namespace:package2:version'
    compile 'namespace:package3:version'
}

Périodiquement, je souhaite mettre à jour chaque package vers sa dernière version. En général, c'est la première chose que je fais pour un nouveau sprint après avoir fait une sortie.

C'est vraiment pénible de le faire manuellement pour chaque paquet. Idéalement, je voudrais une commande pour mettre à jour le fichier build.gradle pour moi, mais au moins une commande qui imprime quel paquet a besoin d'une mise à jour et quel est le dernier numéro de version.

Dans Ruby land, je lancerais la mise à jour du bundler.

23
Jared Kells

C'est tout ce que j'ai pu trouver. J'accepterai volontiers une autre réponse s'il existe une méthode moins manuelle pour ce faire.

  1. Dans Android studio, je remplace chaque version de dépendance par un exemple plus: compile 'namespace:package1:+'

  2. Synchronisez ou générez le projet, ce qui entraînera la résolution de toutes les dépendances vers leur dernière version.

  3. Dans Android Studio, placez le curseur sur chaque ligne de dépendance dans build.gradle et appuyez sur alt + entrée un menu apparaît et vous pouvez sélectionner Remplacer par spécifique version

20
Jared Kells

Ce n'est pas une très bonne pratique car les bibliothèques peuvent inclure des modifications susceptibles de casser votre code.

Une syntaxe commune "tolérée" pour

compile 'namespace:package:major_version.minor_version.revision'

serait comme

compile 'namespace:package:1.0.+'

considérant que la révision est utilisée par les auteurs de la bibliothèque comme corrections de bugs et mises à jour des améliorations

Remarque: je viens de le faire et vous pouvez le faire

compile 'namespace:package:+'

Éditer:
A Proof Of Concept de mon dernier commentaire vous voudrez peut-être tester.
Cela a été fait en 5 minutes, alors ne vous attendez pas à ce qu'il soit parfait ni flexible.

7
Gorcyn

Ajouter à build.gradle:

plugins {
  id 'com.github.ben-manes.versions' version '0.17.0'
}

Ensuite, vous pouvez faire gradle dependencyUpdates pour obtenir un rapport des nouvelles versions. Contrairement au plugin éponyme Maven, il ne semble pas y avoir de moyen de mettre à jour automatiquement le build.gradle encore.

Plus de documentation: https://github.com/ben-manes/gradle-versions-plugin

4
Robert Jack Will

J'en souffre aussi. Et la meilleure façon de vérifier les dépendances, même manuellement, est de passer par la structure du projet et de rechercher le nom de la dépendance et de voir s'il existe une version plus récente.

Le problème que cette requête vérifie uniquement les dépendances présentes dans le référentiel Maven. Au moins, cela vaut déjà pour Google.

enter image description here

enter image description here

enter image description here

Remarque: Si vous choisissez d'ajouter la dépendance avec la nouvelle version, cela ajoutera une duplicité dans le Gradle de votre application, assurez-vous donc de supprimer l'ancienne ligne de dépendance.

Une autre solution rapide possible est via la ligne de commande:

./gradlew app: dependencies

Cela générera une sortie comme celle ci-dessous. Notez que l'astérisque indique une éventuelle nouvelle version existante.

enter image description here