Maven
Mac
spring
SpringToolsSuites

Springを始める時にmavenの設定でハマったこと

More than 1 year has passed since last update.

環境

macOS Sierra
maven 3.5.0
IDE STS 3.8.4

エラー内容

STSでSpringプロジェクトを作成した時に、以下のようなビルドエラーが出る。

Archive for required library: '~/.m2/repository/org/hibernate/hibernate-core/4.2.1.Final/hibernate-core-4.2.1.Final.jar' in project 'ProjectName' cannot be read or is not a valid ZIP file

(missing file) ではないのでファイルは存在している(実際にフォルダを探すと確かに存在している)が、ファイルが壊れていて読み取りできません、的なメッセージ。
Mavenでいろいろなライブラリを読み込んでいますが、なぜかこのファイルだけがエラーになるという不可解な状態。

試したこと1

いろいろ調べてみると似たような事象は多いものの、これだ!という解決策は見つからず。
わかったことは、SpringではなくMavenの問題であることが多いらしい。
ファイルが壊れているということで対象を一度削除して maven で取得し直してみる。

1. hibernate-core を削除

rm -r ~/.m2/repository/org/hibernate/hibernate-core

2. プロジェクトをアップデート

プロジェクトを右クリックして Maven > Update Project...
hibernate-core が再作成されたことを確認してビルド

結果は、何も変わらず。
rm -r ~/.m2/repositoryで丸ごと削除して試しても変わりませんでした。

試したこと2

原因がよくわからないので、とりあえずMavenの設定を確認してみます。

1. ローカルリポジトリ
初期状態のままなので、ローカルリポジトリは ~/.m2/repository ですが。
念のため、${インストールした場所}/maven/conf/settings.xml<localRepository>を設定しておきます。

settings.xml
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
  <localRepository>/Users/${ユーザー名}/.m2/repository</localRepository>

この状態で一度プロジェクトをアップデートしてビルドしてみたところ、なぜかエラーが解消されていました。
結局何が原因だったのかよくわかりませんが、一応解決できたので、同じところでつまづかないようにメモしておきます。

参考

Maven のバージョンは違いますが、こちらを参考にさせていただきました。
http://qiita.com/opengl-8080/items/226dd39bd02e41b9de28