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




resolve resolution (10)

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


Answers

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.


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 .


Vous devez le télécharger à nouveau, vous pouvez donc télécharger manuellement et remplacer le fichier corrompu et synchroniser à nouveau votre projet. Aller à cet emplacement C: \ users [nom d'utilisateur] .gradle \ wrapper \ dist \ gradle3.3-tout \ 55gk2rcmfc6p2dg9u9ohc3hw9 \ gradle-3.3-all.zip Ici supprimer gradle3.3allzip et le remplacer en téléchargeant à nouveau à partir de ce site https://services.gradle.org/distributions/ Trouvez le même fichier et téléchargez-le et collez-le à cet emplacement Ensuite, synchronisez votre projet. J'espère que ça marchera pour toi aussi.


Pour Mac

./gradlew build --refresh-dependencies

Pour les fenêtres

gradlew build --refresh-dependencies

Peut aussi essayer gradlew assembleDevelopmentDebug --refresh-dependencies


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.


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.



Je ne pouvais pas obtenir la suggestion ci-dessus à https://.com/a/20956456/1019307 pour travailler. Cela a fonctionné pour moi cependant. Pour un fichier secondstring-20030401.jar que j'ai stocké dans un répertoire libs/ à la racine du projet:

repositories {
    mavenCentral()
    // Not everything is available in a Maven/Gradle repository.  Use a local 'libs/' directory for these.
    flatDir {
       dirs 'libs'
   }
}

...

compile name: 'secondstring-20030401'




gradle