リポジトリから依存関係を再ダウンロードするようにgradleに指示するにはどうすればよいですか。
一般に、コマンドラインオプション --refresh-dependencies を使用してキャッシュ内の依存関係を更新できます。 ~/.gradle/caches
の下にあるキャッシュファイルを削除することもできます。次回のビルドで、Gradleはそれらをもう一度ダウンロードしようとしました。
あなたの特定のユースケースは何ですか?動的依存関係バージョンまたはSNAPSHOTバージョンのどちらを使用しますか?
Unixシステムでは、Gradleがダウンロードした既存の成果物(成果物とメタデータ)をすべて削除できます。
rm -rf $HOME/.gradle/caches/
最近のバージョンのGradleを使用している場合は、--refresh-dependenciesオプションを使用できます。
./gradlew build --refresh-dependencies
Gradleのマニュアル を参照することができます。
--refresh-dependenciesオプションは、解決されたモジュールとアーティファクトについてキャッシュされたすべてのエントリを無視するようにGradleに指示します。 動的バージョンが再計算され、モジュールが更新され、成果物がダウンロードされた状態で、構成されたすべてのリポジトリーに対して新規解決が実行されます。
依存関係に「変更中」のフラグを立てることで、ビルドスクリプト内の依存関係を再ダウンロードするようにGradleに指示できます。 Gradleは24時間ごとにアップデートを確認しますが、resolutionStrategy DSLを使用して設定できます。 SNAPSHOTまたはNIGHTLYビルドにこれを使用すると便利です。
configurations.all {
// Check for updates every build
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
拡大:
dependencies {
compile group: "group", name: "projectA", version: "1.1-SNAPSHOT", changing: true
}
要約:
compile('group:projectA:1.1-SNAPSHOT') { changing = true }
私はこの フォーラムのスレッド でこの解決策を見つけました。
Mac用
./gradlew build --refresh-dependencies
Windowsの場合
gradlew build --refresh-dependencies
gradlew assembleDevelopmentDebug --refresh-dependencies
も試すことができます
Windowsの場合 ... gradleを再ダウンロードするためのspecific依存関係:
以下のディレクトリから再ダウンロードしたい依存関係を削除します。
C:\Users\[username]\.gradle\caches\modules-2\files-2.1
パスにあるすべてのmetadataディレクトリを削除します。
C:\Users\[username]\.gradle\caches\modules-2\metadata-*
プロジェクトのルートディレクトリでgradle build
(またはgradle wrapperを使用している場合はgradlew build
)を実行します。
注:上記のファイルパス内の数字はあなたにとって異なる場合があります。
キャッシュされたjarファイルでフォルダを削除できます。
私の場合、 Macの場合 ライブラリは次のパスにキャッシュされています。
/Users/MY_NAME/.gradle/caches/modules-2/files-2.1/cached-library-to-remove
キャッシュされたライブラリフォルダ(上記の例では "cached-library-to-remove")を削除し、プロジェクトのビルドフォルダを削除して再度コンパイルしました。それから新鮮な図書館がダウンロードされました。
ここでいくつかの回答から示唆されているように、グラドルキャッシュ全体を削除する代わりに、特定のグループまたはアーティファクトIDのキャッシュを削除することができます。私の.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
}
使用法:
$ deleteGradleCache com.Android.support
その後、次回のビルド時または再同期する場合は、gradleを使用して依存関係を再ダウンロードします。
これは私のために働きました。 [ファイル]> [設定]> [Gradle]> [オフライン作業]のボタンをオフにして、Gradleがオフラインに設定されていないことを確認します。
これをあなたのbuild.gradleのトップレベルに追加してください。
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
私は私の依存関係がこのように書かれていることを確認しました:
implementation('com.github.juanmendez:ThatDependency:ThatBranch-SNAPSHOT') {
changing = true
}
その後、Android StudioでGradleパネルを開き、青い丸の矢印ボタンをクリックします。私は自分のアップデートが新しい新鮮なコピーを取得しているのをいつでも見ることができます。
それには2つの方法があります。
--refresh-dependencies optionを使用する。
./gradlew build --refresh-dependencies
簡単な説明 --refresh-dependenciesオプションは、解決されたモジュールとアーティファクトについてキャッシュされたすべてのエントリを無視するようにGradleに指示します。
長い説明
Deleteを使う:キャッシュを削除したとき
rm -rf $HOME/.gradle/caches/
キャッシュされたjarファイルとsha1の合計をすべて削除するだけで、Gradleはマシンにアーティファクトがなく、すべてをダウンロードしなければならない状況にあります。はい、それは初めて100%動作しますが、別のSNAPSHOTがリリースされ、それがあなたの依存関係ツリーの一部であるとき、あなたはキャッシュをリフレッシュするか消去するかの選択の前に再び直面するでしょう。
このディレクトリを削除します。
C:\Users\[username]\.gradle
Android Studio 3.4.1の場合
単に([右側]にある)[Gradle]タブを開いてリスト内の親([Android]と表示されているはずです)を右クリックし、[Refresh dependencies]を選択します。
これで問題は解決します。
Mb私は遅すぎますが、私の解決策は単一リポジトリ用です。 〜/ .gradle/*を削除するのはやり過ぎだと思います。私がぶつかった問題は、私がソースがあったディレクトリを削除していて、gradleがnexusからではない別のバージョンを取得していたことでした。それを避けるために、私は次を実行します。
~/.gradle$ find . -type d -name 'group.plugins.awssdk'
./caches/modules-2/files-2.1/group.plugins.awssdk
./caches/modules-2/metadata-2.23/descriptors/group.plugins.awssdk
~/.gradle$ rm -r ./caches/modules-2/files-2.1/group.plugins.awssdk ./caches/modules-2/metadata-2.23/descriptors/group.plugins.awssdk
その後は、nexusからファイルをドラッグすることになります。
gradleコマンドをどこで実行するのか疑問に思っている人のために:
Androidスタジオを開く - >ターミナルをクリックする(Androidスタジオのベースにある) - >コマンドツールが開く--->コマンドを入力する(gradlew build --refresh-dependencies)
Eclipseを使用していて、Eclipseに依存関係を強制的に再ロードさせたい場合は、以下のコマンドを試してください。
gradlew clean cleaneclipse build Eclipse --refresh-dependencies
すべてのキャッシュを削除すると、すべての依存関係が再びダウンロードされます。それでそれはとても長い時間がかかります、そしてそれはすべての依存関係を再びダウンロードするためにもう一度待つことを退屈です.
どのように私はこれ以下の方法でこれを解決することができました。
更新する必要があるグループを削除するだけです。
例: com.user.test groupを更新したい場合
rm -fr ~/.gradle/caches/modules-2/files-2.1/com.user.test/
それからbuild.gradleから依存関係を削除し、それを追加し直します。それからそれは私たちが望む依存関係をリフレッシュします。
あなたはこれのようにそれをすることができます
https://marschall.github.io/2017/04/17/disabling-gradle-cache.html
Gradleビルドキャッシュを無効にする から引用する
Gradleを使って大規模なプロジェクトを定期的に構築している場合、Gradleビルドキャッシュは非常に便利です。しかし、たまにオープンソース>プロジェクトを構築するときには、すぐに大きくなることがあります。
Gradleビルドキャッシュを無効にするには、
~/.gradle/gradle.properties
に次の行を追加します。org.gradle.caching=false
既存のキャッシュをきれいにすることができます
rm -rf $HOME/.gradle/caches/ rm -rf $HOME/.gradle/wrapper/
ほとんどの場合、単にプロジェクトを再構築するだけでうまくいきます。いくつかの答えがすでに述べたように(依存関係の程度によっては長い時間がかかります)、./gradlew build --refresh-dependencies
を実行しなければならない場合があります。しかし、依存関係が更新されないこともあります。その後、これを行うことができます。
NonExistingClass
の理由で)これはばかげていて狂気のように思えますが、私は実際に毎日この手順を使用しています。なぜなら、必要な依存関係が何十回も更新され、適切な解決策が何も効果がないからです。
課題2.14.1でこの問題は解決したと思います。受け入れられた答えは正しいですが、-refresh-dependenciesのgradleにバグがあります。 2.14.1でそれが修正されています。
https://discuss.gradle.org/t/refresh-dependencies-should-use-cachechangingmodulesfor-0s/556を参照してください