リポジトリから依存関係を再ダウンロードするようにgradleに指示するにはどうすればよいですか?
リポジトリから依存関係を再ダウンロードするようにgradleに指示するにはどうすればよいですか?
回答:
通常、コマンドラインオプション--refresh-dependenciesを使用して、キャッシュ内の依存関係を更新できます。でキャッシュされたファイルを削除することもできます~/.gradle/caches
。次のビルドでは、Gradleはそれらを再度ダウンロードしようとします。
あなたの具体的なユースケースは何ですか?動的依存関係バージョンまたはSNAPSHOTバージョンを使用していますか?
Unixシステムでは、Gradleがダウンロードした既存のアーティファクト(アーティファクトとメタデータ)をすべて削除できます。
rm -rf $HOME/.gradle/caches/
find $HOME/.gradle/caches/ -name "*LIBRARY_NAME*" -exec rm -r {} \;
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 {
implementation group: "group", name: "projectA", version: "1.1-SNAPSHOT", changing: true
}
凝縮:
implementation('group:projectA:1.1-SNAPSHOT') { changing = true }
私はこの解決策をこのフォーラムのスレッドで見つけました。
cacheChangingModulesFor
はキーであり、changing: true
によって暗示されるためオプションです。上記の意味合いのため、-SNAPSHOT
ここでは省略形を使用できcompile 'group:projectA:1.1-SNAPSHOT'
ます。resolutionStrategyを1つの構成に制限することもできます:configurations.compile.resolutionS...
。
compile 'com.burrowsapps:ads:1.0:true'
?
Mac用
./gradlew build --refresh-dependencies
Windowsの場合
gradlew build --refresh-dependencies
また試すことができます gradlew assembleDevelopmentDebug --refresh-dependencies
gradle wrapper
タスクを使用して生成できます。あなたも別のGradleラッパーを使用してラッパーを生成することができます:gradlew wrapper
Windowsの場合 ... gradleに特定の依存関係を再ダウンロードさせるには:
以下のディレクトリから、再ダウンロードする依存関係を削除します。
C:\Users\%USERNAME%\.gradle\caches\modules-2\files-2.1
パスにあるすべてのメタデータディレクトリを削除します。
C:\Users\%USERNAME%\.gradle\caches\modules-2\metadata-*
プロジェクトのルートディレクトリで実行しますgradle build
(またはgradlew build
Gradleラッパーを使用している場合)。
注:上記のファイルパスの数値は、実際とは異なる場合があります。
ここでいくつかの回答が示唆しているように、gradleキャッシュ全体を削除する代わりに、特定のグループまたはアーティファクトIDのキャッシュを削除できます。次の関数をmyに追加しました.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は依存関係を再ダウンロードします。
それには2つの方法があります。
--refresh-dependenciesオプションの使用:
./gradlew build --refresh-dependencies
簡単な説明 --refresh-dependenciesオプションは、解決されたモジュールとアーティファクトのすべてのキャッシュされたエントリを無視するようにGradleに指示します。
長い説明
削除の使用:キャッシュを削除する場合
rm -rf $HOME/.gradle/caches/
キャッシュされたすべてのjarファイルとsha1サムをクリーンアップするだけで、Gradleはマシンにアーティファクトがなく、すべてをダウンロードする必要がある状況にあります。はい、初めて100%動作しますが、別のスナップショットがリリースされ、依存関係ツリーの一部である場合、キャッシュを更新またはパージするという選択肢の前に再び直面します。
これでうまくいきました。[ファイル]> [設定]> [Gradle]> [オフライン作業]のボタンをオフにして、Gradleがオフラインに設定されていないことを確認します。
これをbuild.gradleのトップレベルに追加します。上記の依存関係があると便利です
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
私は依存関係が次のように書かれていることを確認しました:
implementation('com.github.juanmendez:ThatDependency:ThatBranch-SNAPSHOT') {
changing = true
}
その後、Android StudioでGradleパネルを開き、青い丸の矢印ボタンをクリックします。更新が新しい新しいコピーを取得するのをいつでも確認できます。
Mb私は手遅れですが、私の解決策は単一のリポジトリ用です。〜/ .gradle / *を削除するのはやり過ぎだと思います。私がぶつかった問題は、ソースがあるディレクトリを削除していて、gradleがネクサスからではない別のバージョンを取得していたことでした。それを避けるために、私は次を実行します:
~/.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
その後、gradleはネクサスからファイルをドラッグしています。
Gradle 2.14.1で問題が解決したと思います。受け入れられた答えは正しいですが、gradleには-refresh-dependenciesのバグがあります。2.14.1で修正されました。
https://discuss.gradle.org/t/refresh-dependencies-should-use-cachechangingmodulesfor-0s/556を参照してください
このディレクトリを削除します。
C:\Users\[username]\.gradle
ほとんどの場合、プロジェクトを再構築するだけでうまくいくはずです。./gradlew build --refresh-dependencies
いくつかの回答がすでに述べられているように、実行する必要がある場合があります(依存関係の程度によっては時間がかかります)。ただし、これらのいずれも機能しないことがあります。依存関係は更新されません。次に、これを行うことができます:
NonExistingClass
理由あり)これはばかげて狂気のようですが、私が実際にこの手順を実際に使用しているのは、必要な依存関係を何十回も更新でき、適切な解決策のどれも効果がないためです。
あなたはこのようにそれを行うことができます
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/
Eclipseを使用していて、Eclipseに依存関係を再ロードさせたい場合は、以下のコマンドを試してください
gradlew clean cleaneclipse build eclipse --refresh-dependencies
キャッシュフォルダー内の特定の依存関係を手動で削除するだけで機能します...エンタープライズリポジトリの同僚が作成したアーティファクト。
ファイルを再ダウンロードする必要があるため、破損したファイルを手動でダウンロードして置き換え、プロジェクトを再度同期できます。この場所に移動しますC:\ users [username] .gradle \ wrapper \ dist \ gradle3.3-all \ 55gk2rcmfc6p2dg9u9ohc3hw9 \ gradle-3.3-all.zipここでgradle3.3allzipを削除し、このサイトからもう一度ダウンロードして置き換え ますhttps:/ /services.gradle.org/distributions/ 同じファイルを見つけて、ダウンロードしてその場所に貼り付け、プロジェクトを同期します。それもあなたのために働くことを願っています。