Comment puis-je forcer gradle à recharger les dépendances?

Comment puis-je dire à gradle de recharger les dépendances des dépôts?

537
demandé sur fedor.belov 2012-11-26 16:42:41

16 réponses

en général, vous pouvez rafraîchir les dépendances dans votre cache avec l'option en ligne de commande --rafraîchir les dépendances . Vous pouvez également supprimer les fichiers mis en cache sous ~/.gradle/caches . Avec le prochain build Gradle tenterait de les télécharger à nouveau.

Quel Est votre cas d'utilisation spécifique? Utilisez-vous des versions de dépendances dynamiques ou des versions de SNAPSHOT?


sur les systèmes Unix, vous pouvez supprimer tous les artéfacts (artéfacts et métadonnées) Gradle a été téléchargé en utilisant:

rm -rf $HOME/.gradle/caches/
664
répondu Benjamin Muschko 2018-02-16 20:43:11

si vous utilisez une version récente de Gradle, vous pouvez utiliser l'option --refresh-dependencies.

./gradlew build --refresh-dependencies

vous pouvez vous référer à la Gradle manuel .

l'option --refresh-dependencies indique à Gradle d'Ignorer toutes les entrées cachées pour les modules résolus et les artefacts. une nouvelle résolution sera effectuée contre tous les dépôts configurés, avec des versions dynamiques recalculées, modules mis à jour, et artéfacts téléchargés.

411
répondu Naggi nagase yoshi 2018-10-01 17:46:14

vous pouvez dire à Gradle de re-télécharger certaines dépendances dans le script de compilation en indiquant que la dépendance est 'changing'. Gradle vérifiera alors les mises à jour toutes les 24 heures, mais cela peut être configuré en utilisant la stratégie de résolution DSL. Je trouve qu'il est utile de l'utiliser pour des instantanés ou des compilations nocturnes.

configurations.all {
    // Check for updates every build
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

Élargi:

dependencies {
    compile group: "group", name: "projectA", version: "1.1-SNAPSHOT", changing: true
}

condensé:

compile('group:projectA:1.1-SNAPSHOT') { changing = true }

j'ai trouvé cette solution à ce fil de discussion du forum .

257
répondu Umi 2016-02-29 06:50:14

MAC

./gradlew build --refresh-dependencies

Pour Windows

gradlew build --refresh-dependencies

peut également essayer gradlew assembleDevelopmentDebug --refresh-dependencies

46
répondu Ali 2018-02-14 17:31:19

Pour Windows ...afin de faire gradle re-télécharger le spécifique dépendances:

  1. supprimer les dépendances que vous souhaitez télécharger à nouveau à partir du répertoire ci-dessous:

    C:\Users\[username]\.gradle\caches\modules-2\files-2.1
    
  2. supprimer toutes les métadonnées répertoires au chemin:

    C:\Users\[username]\.gradle\caches\modules-2\metadata-*
    
  3. exécuter gradle build (ou gradlew build si vous utilisez gradle wrapper) dans le répertoire racine du projet.

note: les numéros dans les chemins de fichier ci-dessus peuvent être différents pour vous.

21
répondu Eric 2017-01-25 19:58:50

on peut supprimer le dossier avec des pots en cache.

dans mon cas, sur Mac la bibliothèque a été mise en cache à path:

/Users/MY_NAME/.gradle/caches/modules-2/files-2.1/cached-library-to-remove

j'ai supprimé le dossier de bibliothèque en cache ("cache-bibliothèque-à-supprimer" dans l'exemple ci-dessus), supprimé le dossier de compilation de mon projet et compilé à nouveau. Frais de bibliothèque a été téléchargé puis.

14
répondu Farhan 2018-05-20 04:16:16

au lieu de supprimer la totalité de votre cache gradle, comme certaines réponses ici le suggèrent, vous pouvez supprimer le cache pour un groupe spécifique ou un identifiant d'artefact. J'ai ajouté la fonction suivante à mon .bash_profile :

deleteGradleCache() {
  local id=
  if [ -z "$id" ]; then
    echo "Please provide an group or artifact id to delete"
    return 1
  fi
  find ~/.gradle/caches/ -type d -name "$id" -prune -exec rm -rf "{}" \; -print
}

Utilisation:

$ deleteGradleCache com.android.support

ensuite, lors de la prochaine compilation ou si vous resyncrez, gradle rechargera les dépendances.

9
répondu Jared Rummler 2016-11-22 18:12:17

il y a 2 façons de le faire:

  1. utilisant l'option de ligne de commande pour rafraîchir les dépendances de cashe.
  2. vous pouvez supprimer la cache locale où les artéfastes sont des caches par Gradle et lancer la construction

utilisant --refresh-dependencies option:

./gradlew build --refresh-dependencies

Brève Explication --l'option refresh-dependencies dit à Gradle d'ignorer tous entrées en cache pour les modules résolus et les artéfacts.

longue explication

  • avec –refresh-dependencies’ Gradle va toujours frapper le serveur distant pour vérifier les artéfacts mis à jour: cependant, Gradle évitera de télécharger un fichier où le même fichier existe déjà dans la cache.
    • First Gradle va faire une requête principale et vérifier si le serveur déclare le fichier inchangé depuis la dernière durée (si les Termes "content-length" et "last-modified" sont inchangés). Dans ce cas, vous obtiendrez le message: "la ressource mise en cache est à jour (lastModified: {})."
    • Next Gradle va déterminer la somme de contrôle à distance si possible (soit à partir de la requête principale, soit en téléchargeant un ‘.sha1 du fichier").. Si cette somme de contrôle correspond à un autre fichier déjà téléchargé (à partir de n'importe quel dépôt), alors Grad le copiera simplement dans le cache, plutôt que de télécharger à nouveau. Dans ce cas, vous aurez la message: ""Trouvés localement les ressources disponibles avec le rattachement de la somme de contrôle: [{}, {}]".

supprimer: Lorsque vous supprimez caches

rm -rf $HOME/.gradle/caches/

vous venez de nettoyer tous les pots de cache et sha1 sommes et Gradle est dans une situation où il n'y a pas d'artefacts sur votre machine et doit tout télécharger. Oui, il fonctionnera à 100% pour la première fois, mais quand un autre SNAPSHOT est libéré et qu'il fait partie de votre arbre de dépendances vous serez confronté de nouveau devant le choix pour rafraîchir ou nettoyer les caches.

3
répondu Xelian 2018-08-05 05:31:01

supprimer ce répertoire:

C:\Users\[username]\.gradle
2
répondu farhang67 2017-07-12 18:56:17

ça a marché pour moi. Assurez-vous que Gradle n'est pas défini à offline par le bouton unchecking au fichier>paramètres>Gradle>travail hors ligne.

ajoutez ceci au niveau supérieur de votre construction.gradle, agréable d'avoir au-dessus de dépendances

configurations.all {
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

j'ai fait en sorte que mes dépendances soient écrites comme ceci:

implementation('com.github.juanmendez:ThatDependency:ThatBranch-SNAPSHOT') {
    changing = true
}

par la suite, j'ouvre le panneau Gradle dans Android Studio et je clique sur le bouton blue circle arrows. Je peux toujours voir mes mises à jour obtenir une nouvelle copie neuve.

2
répondu Juan Mendez 2018-09-05 14:22:00

je pense que gradle 2.14.1 résout le problème. La réponse acceptée est correcte, mais il y a un bug dans gradle with –refresh-dependencies. 2.14.1 corrige cela.

voir https://discuss.gradle.org/t/refresh-dependencies-should-use-cachechangingmodulesfor-0s/556

0
répondu Jacques Koorts 2016-07-21 08:32:13

pour la plupart des cas, il suffit de reconstruire le projet DEVRAIT FAIRE l'affaire. Parfois ,vous devez exécuter ./gradlew build --refresh-dependencies comme plusieurs réponses l'ont déjà mentionné (cela prend beaucoup de temps, selon la quantité de dépendances que vous avez). Cependant, parfois, rien de tout cela ne fonctionnera: la dépendance ne sera tout simplement pas mise à jour. Ensuite, vous pouvez faire ceci:

  1. supprimer la dépendance de votre fichier gradle
  2. Exécuter / déboguer votre projet et attendre l'échec (avec NonExistingClass la raison)
  3. Hit "projet de construction" et attendre qu'elle se termine avec succès
  4. Exécuter / déboguer une fois de plus

c'est ridicule et cela semble être de la folie, mais en fait j'utilise cette procédure quotidiennement, simplement parce que la dépendance dont j'ai besoin peut être mise à jour des douzaines de fois et aucune des solutions adéquates n'aurait d'effet.

0
répondu egorikem 2018-06-20 13:59:43

Vous pouvez le faire comme ceci

https://marschall.github.io/2017/04/17/disabling-gradle-cache.html

pour citer de désactiver le Gradle Build Cache

la cache Gradle build peut être une grande chose lorsque vous construisez régulièrement >grands projets avec Gradle. Toutefois, lorsque la construction de projets open source >n'est qu'occasionnelle, elle peut rapidement prendre de l'ampleur.

pour désactiver le cache de construction Gradle ajouter la ligne suivante à ~/.gradle/gradle.properties

org.gradle.caching=false

vous pouvez nettoyer le cache existant avec

rm -rf $HOME/.gradle/caches/
rm -rf $HOME/.gradle/wrapper/
0
répondu wuqilong 2018-08-22 06:49:46

si vous utilisez eclipse et si vous voulez que force eclipse recharge les dépendances, vous pouvez essayer la commande

gradlew clean cleaneclipse build eclipse --refresh-dependencies
0
répondu ULLAS K 2018-09-20 06:22:33

pour ceux qui se demandent où exécuter les commandes gradle:

Open android studio-- > cliquez sur le Terminal (vous le trouverez dans la base de android studio)-- > l'outil de commande s'ouvrira- - > Tapez votre commande (gradlew build --refresh-dependencies)

0
répondu kgandroid 2018-10-05 08:13:15

vous devez le recharger, de sorte que vous pouvez télécharger et remplacer manuellement le fichier corrompu et de nouveau synchroniser votre projet . Accédez à l'emplacement suivant C:\users[nom d'utilisateur].gradle\wrapper\dist\gradle3.3-tous les\55gk2rcmfc6p2dg9u9ohc3hw9\gradle-3.3-tous.zip Ici supprimer Grade3.3allzip et le remplacer en le téléchargeant de nouveau à partir de ce site https://services.gradle.org/distributions / Trouvez le même fichier et téléchargez-le et collez-le à cet endroit Puis de synchroniser votre projet. Espérons qu'il qui fonctionne pour vous aussi.

-6
répondu Rahul Gupta 2017-06-15 05:10:08