Magnolia Tech

いつもコードのことばかり考えている人のために。

yet anotherなsbtランナー「sbt-extras」を使う

Scalaのビルドツールと言えばsbtですね。

インストール自体は簡単で、事前にJavaの実行環境がインストールされていれば、各種パッケージ管理ツールでインストールすれば使えます。

sbt Reference Manual — Installing sbt

Homebrewの例でいけば、以下のコマンドでインストールされます。

$ brew install sbt

sbtコマンド自体はただのランナーで、実態は一緒にインストールされているsbt-launch.jarというjarを起動しているだけです(JVMですからね)。

実行したカレントディレクトリに、project/build.propertiesが有れば、そのバージョンに合わせたsbtの本体(jar)がダウンロードされ、なければインストールされているsbt-launch.jarで指定されているsbtがダウンロードされます。

sbt-extras

状況によっては必ずしもプロジェクトディレクトリの外には何もインストールしたくない場合、つまりsbtコマンドすらインストールしたくないことも有るかと思います(チームで環境を統一させたいけど、いちいちインストールさせるのはハードル高いとか、サンプルコードを配布したいときとか)。

そんな時にはyet anotherなsbtランチャーであるsbt-extrasが便利です。

sbt-extrasシェルスクリプト一枚で提供されていて、プロジェクトディレクトリに指定したsbt-launch.jarをダウンロードするところから始めてくれるので、あらかじめsbtを環境にインストールしておく必要がありません。

github.com

セットアップと、実行

READMEにはインストール方法として下記のように書かれていますが、これでは(ホームディレクトリ配下ですが)グローバルにインストールするのと変わりません。

$ curl -Ls https://git.io/sbt > ~/bin/sbt && chmod 0755 ~/bin/sbt

今回はプロジェクトディレクトリを作って、そこにダウンロードするようにします(project-dirは適当にリネームしてください)。

$ mkdir [project-dir]
$ curl -Ls https://git.io/sbt > [project-dir]/sbt && chmod 0755 [project-dir]/sbt
$ cd [project-dir]
$ mkdir project
$ echo sbt.version=1.0.4 > project/build.properties
$ ./sbt

2017/11/30時点でのsbtの最新バージョンは1.0.4なので、それを指定しましたが、原則最新バージョンを指定しておけば良いでしょう。

sbtコマンドを実行した時点で必要なjarが全て自動的にダウンロードされ、指定したバージョンのsbtが起動します。

あとは適宜build.sbtを作って、src以下にコードをどんどん書いていきましょう。

これでJavaの実行環境さえインストールされている環境であれば、プロジェクトディレクトリのリポジトリgit cloneするだけで、誰でもsbtが使えるようになります(.gitignoreを作ってtarget/以下がリポジトリに含まれないように気をつけましょう)。

そのほかの使い方

$ ./sbt -h

上記のコマンドを叩くとヘルプが表示されます。JVMオプションの追加や、sbtのバージョンの指定などもできます。

注意事項

sbt-launch.jarのダウンロードパスがsbtのバージョンによって変わったりして、sbt-extrasも日々バージョンアップしています。そのため、古いsbt-extrasではsbt 1.0.xがダウンロードできなかったりと言った事象も有りました。使うsbtをアップデートするときはバンドルしているsbt-extrasの対応状況を必ず確認するようにしましょう。