Java
Maven
Eclipse

Mavenリポジトリのローカルキャッシュ

Eclipce環境下でMavenのローカルキャッシュによりハマったため、備忘録として残したいと思う。

事の発端

とあるプロジェクト、 git pull によってソースが更新されたタイミングで

ビルド・パスのエラーが解決されるまで、プロジェクトをビルドできません。
----------------------.jar が見つかりません。

こんな感じのエラーにより、プロジェクト内のJunitテストが動作しなくなった。
タイミングがたまたま git pull の直後だっただけで、具体的に何がトリガーか分からず。

試行錯誤

ひとまずMavenの依存関係をチェック。
エラーに表示されているjarファイルは存在している。
が、パッケージ・エクスプローラーからそのjarファイルを見ようとすると、開けない。

invalid LOC header(bad signature)

画面には上記表示。なるほどわからん。
試しにpom.xmlで別バージョンを指定してjarを取得してやると上手くコンパイルが通った。
Junitテストも動くようになったが、何の解決にもなっていないので試行続行。
後から考えるとこの辺の挙動も、解決のヒントになったのかもしれない。

気を取り直して、よくわからんエラーの時にとりあえずやってみる対処を...

  • プロジェクトのRefresh
  • ビューの問題タブからエラーを削除してClean→Build
  • maven clean
  • maven install
  • プロジェクト削除 → プロジェクトを再Import
  • Eclipseを再起動

一通りやってみたが、ダメだった。

解決

Google先生を問い詰めていると、
Mavenリポジトリのローカルキャッシュがおかしなことになっている可能性があるとのこと。

.m2配下にMavenキャッシュが存在するらしい。
~/.m2/repository 配下のフォルダを全て削除し、
Mavenプロジェクト右クリック → Maven → Update Maven Project... からpom.xmlを反映し直す。

お、コンパイル通った。
無事Junitテストも実行することができ、一件落着。

まとめ

とりあえずエラーを解消する対処なんてことをいつもしているからこうなる。
知識不足も去ることながら、しっかり原因を捉えた上で考えて対応しましょうね、と。
当たり前のことですが、良い戒めになりました。

ただ今回のような「よくわからないけどエラーが起きている」という時には、
色々試せる武器を持っていなければならないですね....