web-dev-qa-db-ja.com

Apache Mavenのキャッシュをどのようにクリアしますか?

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

このキャッシュをクリアして、作成する必要があるローカル成果物のクリーンビルドを常にMavenにトリガーさせる方法はありますか?

特に、warプラグインを使ったWebアプリケーションの構築に問題があります。 Mavenのバージョンは3.0.3です。戦争プラグインのバージョンは2.1.1です。

174
MetroidFan2002

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

187
palacsint

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

  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番目を使用し、ローカルレポジトリを破棄して依存関係を再度取得したい場合は1番目を使用します。
153
Brian C.

settings.xml 内のリポジトリのupdatePolicy設定を確認または変更しましたか。

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

alwaysに設定してみてください。

12
FrVaBe

私は次のようにします。

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

フラグはmavenに依存関係を解決しようとしたり、ネットワークにアクセスしようとしないように伝えます。 ローカルに表示されているものを削除してください。

また、良い方法として、最後までエラー(--fail-at-end)を無視してください。これは、やや戸惑った一連の依存関係があるプロジェクトや、やや戸惑った内部リポジトリに頼っているプロジェクトに役立つことがあります(それが起こります)。

8
luis.espinal

これはSpring Tool Suite v 3.1.0.RELEASE上で動作しますが、Eclipse上でも同様に利用可能であると思います。

/username/.m2ディレクトリにある(上記のpalacsintで説明されているように)アーティファクトを手動で削除した後、次の手順を実行してファイルのインデックスを再作成します。

Windows - >設定 - > Maven - >ユーザー設定メニューに行きます。

[Local Repository]テキストボックスの横にある[Reindex]ボタンをクリックします。 「適用」をクリックしてから「OK」をクリックすれば完了です。

6
Felby

いくつかの回答が指摘しているように、ローカルリポジトリ全体を削除したくなることがあります。

たとえばcleanのように、この削除をMavenフェーズに埋め込む場合は、maven-clean-pluginを使用して設定を通じてリポジトリにアクセスできます。次に例を示します。

 <plugin>
    <inherited>false</inherited>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.1</version>
    <executions>
        <execution>
            <phase>clean</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <echo>Base clean is attached to deleting local maven cache</echo>
                    <echo>${settings.localRepository}</echo>
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>

<plugin>
    <inherited>false</inherited>
    <artifactId>maven-clean-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <filesets>
            <fileset>
                <directory>${settings.localRepository}</directory>
            </fileset>
        </filesets>
    </configuration>
</plugin>
2