sbt 1.0 でインクリメンタルコンパイラを全く使わずにコンパイルする

以下経緯

togetter.com

github.com

それで、tweetしていた件

「compiler の bridge に互換なくなった場合でも最低限コンパイル可能なような、インクリメンタルコンパイルを一切行わない、scalacのmainに直接引数渡してコンパイルするだけのモード」

が70行ちょっとのコードで出来たので、貼り付けておきます。

ログの処理とか成功失敗の判断などがとても雑というか、何もしてないですが、全てのオプションをちゃんと渡して、依存ライブラリのpathも渡して(わりと勝手に渡ってくる)、classファイル生成先ディレクトリくらいは正しく設定したので、最低限使えると思ってます。

キャッシュを一切考慮しないので、全くソースファイルに変更がなくても、毎回classファイルをディレクトリ丸ごと削除して全コンパイルします。

ただし、これはあくまで「やってみたらできたので貼り付けておきます」という報告であって、99%のユーザーはこれを実用せずに、sbt 1.0.4で修正される予定らしいのでそのリリースを待てばいいと思います。

https://gist.github.com/xuwei-k/58b082737d564b4720b850045cf7b5a9

gist.github.com

コンパイラーブリッジとかインクリメンタルコンパイラってなに?という人は、以前の以下のエントリなどを読んでくだだい

xuwei-k.hatenablog.com