Question Comment puis-je forcer Gradle à redéfinir les dépendances?


Comment puis-je demander à Gradle de télécharger à nouveau des dépendances à partir de référentiels?


511
2017-11-26 12:42


origine


Réponses:


Généralement, vous pouvez actualiser les dépendances dans votre cache avec l'option de ligne de commande --refresh-dependencies. Vous pouvez également supprimer les fichiers en cache sous ~/.gradle/caches. Avec le build suivant, Gradle tentera de les télécharger à nouveau.

Quel est votre cas d'utilisation spécifique? Utilisez-vous des versions à dépendance dynamique ou des versions SNAPSHOT?


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

rm -rf $HOME/.gradle/caches/

638
2017-11-26 15:21



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 au manuel de graduation.

L'option --refresh-dependencies indique à Gradle d'ignorer toutes les entrées mises en cache pour les modules résolus et les artefacts. Une nouvelle résolution sera effectuée sur tous les référentiels configurés, avec des versions dynamiques recalculées, des modules actualisés et des artefacts téléchargés.

Gradle manuel


381
2017-08-05 12:48



Vous pouvez dire à Gradle de retélécharger certaines dépendances dans le script de construction en signalant la dépendance comme étant 'changeante'. Gradle vérifiera alors les mises à jour toutes les 24 heures, mais ceci peut être configuré en utilisant le DSL resolutionStrategy. Je trouve utile d'utiliser ceci pour SNAPSHOT ou NIGHTLY builds.

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

Étendu:

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


249
2018-02-11 01:49



Pour Mac 

./gradlew build --refresh-dependencies

Pour les fenêtres 

gradlew build --refresh-dependencies

Peut aussi essayer gradlew assembleDevelopmentDebug --refresh-dependencies


43
2017-10-21 18:15



Pour les fenêtres... afin de faire re-télécharger graduellement spécifique dépendances:

  1. supprimez les dépendances que vous souhaitez télécharger à nouveau dans le répertoire ci-dessous:

    C:\Users\[username]\.gradle\caches\modules-2\files-2.1
    
  2. supprimer tout métadonnées répertoires sur le chemin:

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

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


18
2017-07-11 10:03



On peut supprimer le dossier avec les fichiers JAR en cache.

Dans mon cas, sur Mac la bibliothèque a été mise en cache sur le chemin:

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

J'ai enlevé le dossier de bibliothèque mis en cache ("caché-bibliothèque-à-enlever" dans l'exemple ci-dessus), ai supprimé le dossier de construction de mon projet et ai encore compilé. La bibliothèque fraîche a été téléchargée alors.


12
2017-08-18 13:25



Au lieu de supprimer tout votre cache gradle, comme le suggèrent certaines réponses ici, 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=$1
  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
}

Usage:

$ deleteGradleCache com.android.support

Ensuite, lors de la prochaine génération ou si vous resynchronisez, Gradle téléchargera à nouveau les dépendances.


8
2017-11-22 18:12



supprimer ce répertoire:

C:\Users\[username]\.gradle

3
2017-07-12 18:56



Cela a fonctionné pour moi. Assurez-vous que Gradle n'est pas en mode hors connexion en décochant le bouton dans Fichier> Paramètres> Gradle> Travail hors connexion.

Ajoutez ceci au niveau supérieur de votre build.gradle, agréable d'avoir les dépendances ci-dessus

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

}

Je me suis assuré que mes dépendances sont écrites comme ceci:

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

Par la suite, j'ouvre le panneau Gradle dans Android Studio et clique sur le bouton bleu des flèches. Je peux toujours voir mes mises à jour obtenir une nouvelle copie fraîche.


1
2017-11-26 20:20



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 avec -refresh-dependencies. 2.14.1 corrige cela.

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


0
2017-07-21 08:32