890

リポジトリから依存関係を再ダウンロードするようにgradleに指示するにはどうすればよいですか?

4

25 に答える 25

983

通常、コマンドラインオプション--refresh-dependenciesを使用して、キャッシュ内の依存関係を更新できます。の下にあるキャッシュファイルを削除することもできます~/.gradle/caches。次のビルドで、Gradleはそれらを再度ダウンロードしようとします。

あなたの具体的なユースケースは何ですか?動的依存関係バージョンまたはSNAPSHOTバージョンを使用していますか?


Unixシステムでは、Gradleがダウンロードした既存のアーティファクト(アーティファクトとメタデータ)をすべて削除できます。

rm -rf $HOME/.gradle/caches/

--refresh-dependenciesは、すべてのアーティファクトを常に再ダウンロードするとは限らないことに注意してください。リポジトリに存在するものと一致する場合は、既存のコピーを使用します。Gradleユーザーガイドから、依存関係を更新します:

--refresh-dependenciesオプションは、解決されたモジュールとアーティファクトのキャッシュされたすべてのエントリを無視するようにGradleに指示します。構成されたすべてのリポジトリに対して新たな解決が実行され、動的バージョンが再計算され、モジュールが更新され、アーティファクトがダウンロードされます。ただし、可能な場合、Gradleは、以前にダウンロードしたアーティファクトが有効かどうかを確認してから、再度ダウンロードします。これは、リポジトリに公開されているSHA1値を、既存のダウンロードされたアーティファクトのSHA1値と比較することによって行われます。

[...]

--refresh-dependenciesを使用すると、依存関係のダウンロードが強制されると考えるのはよくある誤解です。これは当てはまりません。Gradleは、動的な依存関係を更新するために厳密に必要なものだけを実行します。これには、新しいリストやメタデータファイル、さらにはアーティファクトのダウンロードが含まれる場合がありますが、何も変更されていない場合、影響は最小限に抑えられます。

于 2012-11-26T15:21:12.527 に答える
883

Gradleの最新バージョンを使用している場合は、-refresh-dependenciesオプションを使用できます。

./gradlew build --refresh-dependencies

Gradleのマニュアルを参照できます。

--refresh-dependenciesオプションは、解決されたモジュールとアーティファクトのキャッシュされたすべてのエントリを無視するようにGradleに指示します。構成されたすべてのリポジトリに対して新たな解決が実行され、動的バージョンが再計算され、モジュールが更新され、アーティファクトがダウンロードされます。

于 2015-08-05T12:48:13.443 に答える
343

依存関係に「変更中」のフラグを立てることで、ビルドスクリプトの一部の依存関係を再ダウンロードするようにGradleに指示できます。その後、Gradleは24時間ごとに更新をチェックしますが、これはresolutionStrategyDSLを使用して構成できます。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 }

私はこのフォーラムスレッドでこの解決策を見つけました。

于 2013-02-11T01:49:21.727 に答える
69

Mac用

./gradlew build --refresh-dependencies

Windowsの場合

gradlew build --refresh-dependencies

試すこともできますgradlew assembleDevelopmentDebug --refresh-dependencies

于 2016-10-21T18:15:52.393 に答える
41

Windowsの場合...gradleに特定の依存関係を再ダウンロードさせるために:

  1. 再ダウンロードする依存関係を以下のディレクトリから削除します。

    C:\Users\%USERNAME%\.gradle\caches\modules-2\files-2.1
    
  2. パスにあるすべてのメタデータディレクトリを削除します。

    C:\Users\%USERNAME%\.gradle\caches\modules-2\metadata-*
    
  3. プロジェクトのルートディレクトリで実行しますgradle build(またはgradlew buildgradleラッパーを使用している場合)。

注:上記のファイルパスの番号は、異なる場合があります。

于 2016-07-11T10:03:04.823 に答える
23

上記の解決策はどれも私にはうまくいきませんでした。

IntelliJを使用している場合、私にとってそれを解決したのは、単にすべてのGradleプロジェクトを更新することでした。

ここに画像の説明を入力してください

于 2019-04-02T07:33:11.700 に答える
22

キャッシュされたjarファイルを含むフォルダを削除できます。

私の場合、Macではライブラリは次のパスにキャッシュされていました。

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

キャッシュされたライブラリフォルダー(上記の例では「cached-library-to-remove」)を削除し、プロジェクトのビルドフォルダーを削除して、再度コンパイルしました。その後、新しいライブラリがダウンロードされました。

于 2016-08-18T13:25:27.803 に答える
18

ここでの回答が示唆しているように、gradleキャッシュ全体を削除する代わりに、特定のグループまたはアーティファクト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は依存関係を再ダウンロードします。

于 2016-11-22T18:12:17.660 に答える
18

キャッシュされた「リリース」バージョンを更新するには、ローカルキャッシュをクリアするしかありません。

rm -rf $HOME/.gradle/caches/

キャッシュされた「スナップショット」バージョンを更新するには、次のことができます。

./gradlew build --refresh-dependencies
于 2020-04-01T11:41:29.443 に答える
15

Gradleコマンドをどこで実行するか疑問に思っている人のために:

  1. AndroidStudioを開きます
  2. ターミナルをクリックします(AndroidStudioのベースにあります)
  3. コマンドツールが開きます
  4. コマンドを入力してくださいgradlew build --refresh-dependencies
于 2018-10-03T10:32:28.717 に答える
12

これを行うには2つの方法があります。

  1. コマンドラインオプションを使用して扶養家族の現金を更新します。
  2. ArtefastがキャッシュであるローカルキャッシュをGradleで削除し、ビルドをトリガーできます

--refresh-dependenciesオプションの使用:

./gradlew build --refresh-dependencies

簡単な説明--refresh-dependenciesオプションは、解決されたモジュールとアーティファクトのキャッシュされたすべてのエントリを無視するようにGradleに指示します。

長い説明

  • –refresh-dependenciesを使用すると、Gradleは常にリモートサーバーにアクセスして、更新されたアーティファクトをチェックします。ただし、Gradleは、同じファイルがキャッシュにすでに存在するファイルのダウンロードを回避します。
    • First GradleはHEADリクエストを行い、サーバーがファイルを前回から変更されていないものとして報告するかどうかを確認します(「content-length」と「last-modified」が変更されていない場合)。この場合、「キャッシュされたリソースは最新です(lastModified:{})」というメッセージが表示されます。
    • 次のGradleは、可能であればリモートチェックサムを決定します(HEADリクエストから、または「.sha1」ファイルをダウンロードすることにより)。このチェックサムが(任意のリポジトリから)すでにダウンロードされた別のファイルと一致する場合、Gradleはファイルを再ダウンロードするのではなく、キャッシュします。この場合、「チェックサムが一致するローカルで利用可能なリソースが見つかりました:[{}、{}]」というメッセージが表示されます。

削除の使用:キャッシュを削除する場合

rm -rf $HOME/.gradle/caches/

キャッシュされたすべてのjarファイルとsha1合計をクリーンアップするだけで、Gradleはマシンにアーティファクトがなく、すべてをダウンロードする必要がある状況にあります。はい、初めて100%動作しますが、別のスナップショットがリリースされ、それが依存関係ツリーの一部である場合、キャッシュを更新するかパージするかの選択の前に再び直面します。

于 2018-08-05T05:31:01.230 に答える
12

AndroidStudio3.4.1の場合

Gradleタブ(右側にあります)を開き、リスト内の親(「Android」と呼ばれるはずです)を右クリックして、「依存関係の更新」を選択します。

これで問題が解決するはずです。

于 2019-05-30T19:55:02.623 に答える
9

これは私のために働いた。[ファイル]>[設定]>[Gradle]>[オフライン作業]のボタンをオフにして、Gradleがオフラインに設定されていないことを確認します。

これをbuild.gradleのトップレベルに追加します。これは、上記の依存関係があると便利です。

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

依存関係が次のように記述されていることを確認しました。

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

その後、Android StudioでGradleパネルを開き、青い丸い矢印ボタンをクリックします。私はいつでも私の更新が新しい新しいコピーを取得しているのを見ることができます。

于 2017-11-26T20:20:56.867 に答える
8

gradleバージョン6.3、kotlinバージョン1.3.70、Groovy2.5.10用にchange変更されているようですisChange

動作構成は

implementation("com.sample:commons:1.0.0-SNAPSHOT") {
        isChanging = true
    }

また、このコマンドを実行して最新のものを取得します

./gradlew assemble  --refresh-dependencies
于 2020-09-28T17:35:53.340 に答える
5

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

その後、gradleはnexusからファイルをドラッグしています。

于 2018-11-12T07:15:36.693 に答える
5

Intellijを使用している場合は、ルートプロジェクトを右クリックして、[Gradleの依存関係の更新]を選択できます。

ここに画像の説明を入力してください

于 2021-10-15T12:29:07.970 に答える
4

私の場合、上記のどれもうまくいきませんでした、私がしたことは:

  • build.gradle、私が持っていた未解決のインポートに関連する依存関係をコメントする
  • 「今すぐ同期」をクリック
  • コメントした内容のコメントを外す
  • もう一度[今すぐ同期]をクリックします

その後、私のインポートは再び適切に解決されました。

于 2020-02-20T17:05:44.273 に答える
1

すべてのキャッシュを削除すると、すべての依存関係が再度ダウンロードされます。そのため、非常に長い時間がかかり、すべての依存関係を再ダウンロードするのをもう一度待つのは退屈なことです。

しかし、私はこれを以下の方法で解決することができました。

更新が必要なグループを削除するだけです。

例:com.user.testグループを更新する場合

rm -fr ~/.gradle/caches/modules-2/files-2.1/com.user.test/

次に、build.gradleから依存関係を削除し、再度追加します。次に、必要な依存関係を更新します。

于 2019-02-28T08:59:29.420 に答える
0

gradle2.14.1で問題が解決したと思います。受け入れられた答えは正しいですが、–refresh-dependenciesを使用したgradleにバグがあります。2.14.1はそれを修正します。

https://discuss.gradle.org/t/refresh-dependencies-should-use-cachechangingmodulesfor-0s/556を参照してください

于 2016-07-21T08:32:13.090 に答える
0

ほとんどの場合、プロジェクトを再構築するだけでうまくいくはずです。いくつかの答えがすでに述べたように、実行しなければならない場合があります./gradlew build --refresh-dependencies(依存関係の量によっては、時間がかかります)。ただし、これらのいずれも機能しない場合があります。依存関係が更新されないだけです。次に、これを行うことができます:

  1. Gradleファイルから依存関係を削除します
  2. プロジェクトを実行/デバッグし、失敗するのを待ちます(NonExistingClass理由があります)
  3. 「プロジェクトのビルド」をクリックして、正常に完了するのを待ちます
  4. もう一度実行/デバッグ

これはばかげて狂気のように見えますが、私が必要とする依存関係は何十回も更新でき、適切な解決策がどれも効果がないという理由だけで、私は実際にこの手順を毎日使用しています。

于 2018-06-20T13:59:43.513 に答える
0

あなたはこのようにそれを行うことができます

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/
于 2018-08-22T03:20:52.813 に答える
0

Eclipseを使用していて、Eclipseに依存関係を再ロードさせたい場合は、以下のコマンドを試すことができます。

gradlew clean cleaneclipse build eclipse --refresh-dependencies
于 2018-09-20T06:22:33.893 に答える
0

キャッシュフォルダ内の特定の依存関係を手動で削除することだけが機能します...エンタープライズリポジトリの同僚によって作成されたアーティファクト。

于 2020-01-07T10:35:17.617 に答える
-1

このディレクトリを削除します。

C:\Users\[username]\.gradle
于 2017-07-12T18:56:17.983 に答える
-7

再ダウンロードする必要があるため、破損したファイルを手動でダウンロードして置き換え、プロジェクトを再度同期することができます。この場所に移動しますC:\ users [username] .gradle \wrapper \ dist \ gradle3.3-all \ 55gk2rcmfc6p2dg9u9ohc3hw9 \ gradle-3.3-all.zipここでgradle3.3allzipを削除し、このサイトから再度ダウンロードして置き換え ますhttps:/ /services.gradle.org/distributions/ 同じファイルを見つけてダウンロードし、その場所に貼り付けてから、プロジェクトを同期します。それがあなたにもうまくいくことを願っています。

于 2017-06-15T05:10:08.610 に答える