2011-09-13 26 views
123

最近、Apache Mavenにキャッシュの問題があるようです。 Windows VistaまたはWindows 7を使用してプロジェクトでクリーンインストールを実行すると、新しいアーチファクトのファイルが更新されていても、以前のビルドと同じデータでアーチファクトが生成されることがあります。どのようにApache Mavenのキャッシュをクリアしますか?

このキャッシュをクリアして、ビルドするローカルの成果物のクリーンなビルドを常に引き起こすようにする方法はありますか?

特に、私たちはwarプラグインを使用してWebアプリケーションを構築する際に問題が発生しています。 Mavenのバージョンは3.0.3です。戦争のプラグインのバージョンは2.1.1です。

+2

アーティファクトを更新する '-U'フラグを試しましたか? –

+2

詳細をお知らせください。扶養家族は戦争で更新されていませんか?もしそうなら、SNAPSHOTバージョンを持つ扶養家族はいますか? – Raghuram

+0

マルチモジュールプロジェクトですか?あなたはdepdendentモジュールのバージョン番号をチェックしましたか?再現できますか? 'mvn clean install'新しい成果物をローカルリポジトリに入れますか? – palacsint

答えて

130

c:\Users\username\.m2\repositoryからアーティファクト(または完全なローカルレポ)を手作業で削除します。

+4

すでに試してみましたが、うまくいきませんでした。しかし、提案をありがとう。 – MetroidFan2002

+124

これはどのように機能しないのですか? –

+0

@ om-nom-nom:編集をありがとう! – palacsint

10

settings.xml更新ポリシーの設定をリポジトリにチェック/変更しましたか?

この要素は、更新を実行する頻度を指定します。 Mavenは、ローカルPOMのタイムスタンプ(リポジトリの maven-metadataファイルに格納されている)とリモートとを比較します。選択肢は、常に、毎日 (デフォルト)、間隔:X(Xは分の整数)または決してありません。

alwaysに設定してください。

+1

これに対処するための助けになる可能性があります。私のpom.xmlには 'updatePolicy>'がありますが、 ''があります –

5

これはSpring Tool Suite v 3.1.0.RELEASEで動作しますが、Eclipseでも使用可能であると推測しています。

ゴー> Preferences-> Maven-のWindows-する:ファイルは、次の操作を実行して、再インデックス、/username/.m2ディレクトリに(上記palacsintで述べたように)手で成果物を削除した後

>ユーザー設定メニューを選択します。

[ローカルリポジトリ]テキストボックスの横にある[再インデックス]ボタンをクリックします。 「適用」をクリックして「OK」をクリックすると、完了です。

112

ローカルキャッシュをクリーニングするには、依存関係プラグインを使用してみてください。

  1. mvn dependency:purge-local-repository:これはローカルリポジトリのファイルを削除しようとする試みであるが、それは常に行くと物事が削除された後にローカルリポジトリをいっぱいに。
  2. mvn dependency:purge-local-repository -DreResolve=false:これにより、依存関係の再解決が回避されますが、ネットワークに移行することがあります。
  3. mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false:これはPawełPrażakによって追加され、うまくいくようです。私はあなたがローカルリポジトリを空にしたい場合は3番目を使用し、ローカルリポジトリを破棄して依存関係をもう一度取得したい場合は最初のものを使用します。
+4

どういう違いがありますか? –

+8

最初はローカルリポジトリファイルを削除しようとしましたが、削除された後は常にローカルリポジトリに移動していっぱいになります。 2つ目は依存関係の再解決を避けますが、ネットワークにはまだまだ行くようです。三番目はPawełPrażakによって追加され、うまくいくようです。私はあなたがローカルリポジトリを空にしたい場合は3番目を使用し、ローカルリポジトリを破棄して依存関係をもう一度取得したい場合は最初のものを使用します。 –

+0

このアクションはどこで実行されますか? CMDはmvnを知らない... – deadManN

0

私は、次の操作を行います:

mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false --fail-at-end 

フラグが依存関係を解決するか、ネットワークをヒットしようとしないようにMavenを教えてください。 ローカルに表示されているものを削除します。

そして適切な対策として、エラー(--fail-at-end)を最後まで無視してください。これは、ある程度混乱した依存関係を持っているプロジェクトや、幾分混乱している内部リポジトリに依存しているプロジェクトには便利なことがあります。

+0

申し訳ありませんが、私は質問を理解していません:/ –

関連する問題