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




resolve dependencies gradle (8)

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.

Comment puis-je dire à Gradle de redéfinir les dépendances à partir des dépôts?


Cela a fonctionné pour moi. Assurez-vous que Gradle n'est pas en mode déconnecté 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 au-dessus des dépendances

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 flèches cercle bleu. Je peux toujours voir mes mises à jour obtenir une nouvelle copie fraîche.


On peut supprimer le dossier avec des bocaux en cache.

Dans mon cas sur Mac la bibliothèque était mise en cache au 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.


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 du gradle.

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


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


supprimer ce répertoire:

C:\Users\[username]\.gradle

Pour Windows ... afin de faire re-télécharger des dépendances spécifiques :

  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. supprimez tous les répertoires de métadonnées sur le chemin:

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

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


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 mis 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/




gradle