のーずいだんぷ

主に自分用メモですが、もしかしたら誰かの役に立つかもしれません

build.sbtのdependenciesに追加したライブラリがダウンロードされない&IntelliJで名前解決できない

どういう問題か

Scalaのプロジェクト管理には多くの場合、sbtが使われているのではないかと思う。 その場合、サードパーティのライブラリを使用するにはbuild.sbt内でdependencies内に依存ライブラリを追加するのだが、追加した後もダウンロードをなかなか開始してくれず、一度ライブラリを消してもそれはなかなか解消されなかった。 またダウンロードできた後もIntelliJでそのライブラリが使用できない(ように見える)問題でハマったので備忘録として記録する。

原因

問題はそれぞれで異なる。

1. build.sbt編集後もなかなかダウンロードされない問題

IntelliJでの自動importが無効になっていた。

2. ローカルのライブラリを消してもなかなかダウンロードされない問題

ivy内にcacheが残っていた。

3. IntelliJでライブラリが使用できない(ようにみえる)問題

後から追加したものに関しては手動でライブラリを追加する必要があった。

解決方法

それぞれ具体的には以下方法で解決することができる。

1. build.sbt編集後もなかなかダウンロードされない問題

これに関してはそもそも自動importに頼らずともsbtプロジェクト内でsbt compileを実行すればおそらく解決する。 ただし、IntelliJのsbtしかない場合はパスとかおそらく通っていないはず(試してはいない)なので、以下の場所で自動importをONにしておくと今

IntelliJ - Preference - Build Tools - sbt
IntelliJ - Preference - Build Tools - sbt
後楽だろう。

2. ローカルのライブラリを消してもなかなかダウンロードされない問題

これについては以下の記事でその理由を細かく説明されているので省略するが、結論:~/.ivy2/cache/*を削除しないとリモートからライブラリの実態をインストールしてくれないようだ。

takezoe.hatenablog.com

3. IntelliJでライブラリが使用できない(ようにみえる)問題

これはそのままだが、手動でライブラリを該当のモジュールに追加して上げる必要がある。 ここで小ネタとして、パスを指定する際に~/.ivy2/を指定する必要があるが隠しフォルダが一見選択できない。これはファイル選択ダイアログ中にcmd + shift + Gでフォルダ移動ができるので、ここで隠しフォルダにも移動ができる。