やろうとしたこと
sbt compileを同一プロジェクトでsbt1.0で利用していたところsbt0.13系を使用してコンパイルしようとした (旧バージョンのプロダクトをビルドしたかった。) 当然sbtは1.0と0.13で定義とか色々設定の仕方が変わっていたりするので、そこのあたりはちゃんと設定できているものとする。 (先日はビルドできていたのになぜかできなくなった)
エラーメッセージ
[error] (compile:copyResources) Error wrapping InputStream in GZIPInputStream: java.util.zip.ZipException: Not in GZIP format
ここには詳細は載せないが、こまかいスタックトレースを追っても原因にたどり着けなかった。
結論
依存性の更新ができていなかった
今回のケースでは、旧バージョンのプロダクションをビルドするものだったので、当然dependenciesは1.0系統と異なるバージョンが指定されていた。 で、これらはprojectフォルダー配下のtargetディレクトリにインストールされているのがデフォルトであるが、どうも1.0→0.13系にした場合はその依存性が更新されず、 1.0系のバージョンを利用してコンパイルしようとして、失敗していたように見える。 おそらく0.13→1.0系にした場合は、自動的に依存性が更新されると思われる。
対策
targetフォルダをすべて消す。
複数のsbtプロジェクトに分けるケースが多いと思うが、例えば以下コマンド等で消す。
find . -name target -exec rm -r "{}" \;