sbt 0.9.1のビルド

Ken published on
4 min, 799 words

Categories: Tips

いつの間にかsbtのバージョンが0.9.1とかなっていたので、慌てて持ってきました! 昨日、sbtバージョンアップしないなぁ…とか思ってたら、ここにあった。 ■ harrah/xsbt - GitHub https://github.com/harrah/xsbt

sbtはbrewでインストールしてたからbrew管理したかったけど、今の状況を見るとbrew管理しない方がよさそう。

ダウンロード

まずは、ファイルをダウンロードして、展開。 harrah-xsbt-v0.9.1-0-g3ce0e5d.zipというファイル名でした。
unzip harrah-xsbt-v0.9.1-0-g3ce0e5d.zip

ビルド…の前の余談

ビルド時にScala 2.9.0-SNAPSHOTの取得に時間がかかっていて、反応がなかったから2.9.0は消した。
cd harrah-xsbt-3ce0e5d
vi project/build/XSbt.scala
lazy val precompiled29 = precompiledSub("2.9.0-SNAPSHOT")
この一行をコメントアウトする。でも、今はこんなことしなくても大丈夫っぽい。

それと、compileをやったらPermGenがOutOfMemoryになった。 そんなわけで、sbtの実行スクリプトは下記にように修正。

java -Xmx1024M -XX:MaxPermSize=512m -jar /usr/local/Cellar/sbt/0.7.4/libexec/sbt-launch-0.7.4.jar "$@"

-Xmx1024M -XX:MaxPermSize=512mを追加して、潤沢にしました。

@teaplanet -Xmx768mでupdateとproguardとpublish-localを別々に実行すると大丈夫でした。PermGenはたぶんクラスが多すぎなんでしょうね。less than a minute ago via web

実際はこれだけあれば足りるらしい。 以下のビルドもこの助言のとおりにやっただけだったりする🙄

ビルド

本題のビルド。
sbt
set build.scala.versions 2.8.1
reload
update
proguard
publish-local
updateでエラーが出たので、懲りずに何回もやったらなんとか通った。応答遅かったりと、ネットワークの問題かな? proguardも何回かやったけど、エラーは消えなかった。これは難読化とか最適化とか、本体に直接関係ないのでエラー出たままpublish-localした。

jarを差し替える

targetディレクトリにsbt-launch-0.9.1.jarが出来ているので、これを既存のsbtと差し替えて完了。

注意

0.7.4のときと比べて、かなりコマンドが増えてる!? まず、currentコマンドがなくなってて、自分が何者かわからない。 どっかのディレクトリでsbtを実行すると、いきなり "project" と "target" ディレクトリが出来るので注意。