最近、Apache Mavenはキャッシュの問題を抱えているようです。 Windows VistaまたはWindows 7を使用してプロジェクトにクリーンインストールを実行すると、新しいアーティファクトのファイルが更新されていても、前のビルドと同じデータのアーティファクトが生成されることがあります。
このキャッシュをクリアして、作成する必要があるローカル成果物のクリーンビルドを常にMavenにトリガーさせる方法はありますか?
特に、warプラグインを使ったWebアプリケーションの構築に問題があります。 Mavenのバージョンは3.0.3です。戦争プラグインのバージョンは2.1.1です。
手作業でc:\Users\<username>\.m2\repository
からアーティファクト(または完全なローカルリポジトリ)を削除します。
ローカルキャッシュを消去するには、依存関係プラグインを使用してみてください。
mvn dependency:purge-local-repository
:これはローカルのリポジトリファイルを削除しようとする試みですが、物事が削除された後は常にローカルリポジトリを移動していっぱいにします。mvn dependency:purge-local-repository -DreResolve=false
:これは依存関係の再解決を避けますが、時々ネットワークに行くようです。mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false
:これはPawełPrażakによって追加されたもので、うまく機能しているようです。ローカルレポジトリを空にしたい場合は3番目を使用し、ローカルレポジトリを破棄して依存関係を再度取得したい場合は1番目を使用します。settings.xml
内のリポジトリのupdatePolicy設定を確認または変更しましたか。
この要素は、更新が行われる頻度を指定します。 MavenはローカルのPOMのタイムスタンプ(リポジトリのmaven-metadataファイルに格納されている)をリモートのものと比較します。選択肢は、常に、毎日(デフォルト)、間隔:X(Xは分単位の整数)、またはなしです。
always
に設定してみてください。
私は次のようにします。
mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false --fail-at-end
フラグはmavenに依存関係を解決しようとしたり、ネットワークにアクセスしようとしないように伝えます。 ローカルに表示されているものを削除してください。
また、良い方法として、最後までエラー(--fail-at-end
)を無視してください。これは、やや戸惑った一連の依存関係があるプロジェクトや、やや戸惑った内部リポジトリに頼っているプロジェクトに役立つことがあります(それが起こります)。
これはSpring Tool Suite v 3.1.0.RELEASE上で動作しますが、Eclipse上でも同様に利用可能であると思います。
/username/.m2ディレクトリにある(上記のpalacsintで説明されているように)アーティファクトを手動で削除した後、次の手順を実行してファイルのインデックスを再作成します。
Windows - >設定 - > Maven - >ユーザー設定メニューに行きます。
[Local Repository]テキストボックスの横にある[Reindex]ボタンをクリックします。 「適用」をクリックしてから「OK」をクリックすれば完了です。
いくつかの回答が指摘しているように、ローカルリポジトリ全体を削除したくなることがあります。
たとえば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>