Scala入門記003 初めてのsbt

実は最近Scala結構やってます。
個人的にもScalaを積極的に使っていくので疑問点を潰していく上でも入門記を続けようと思います。
Scala入門記の目次はこちらです。


前回も紹介しましたが、Scalaでビルドする際はsbtが標準的なツールです。
これをmavenと同等以上に使えるようになりたいところです。

まずは使いはじめるためには公式ドキュメントの和訳「始める sbt - ようこそ」を適宜読んでいくのが良さそうです。


準備

今日は軽く最初から試してみました。
まずは適当なフォルダにビルドの定義build.sbtを作ります。

name := "scala-ample-001"

version := "1.0"

scalaVersion := "2.10.3"

プロジェクト名とそのバージョン、使うscalaのバージョンを指定しただけです。

そしてソースコードを用意します。
ファイルはsrc/main/scala/Hello.scalaにしました。

object Hello {
  def main(args: Array[String]) {
    println("Hello!")
  }
}

実行

実行は前回と同じで以下のコマンドで「Hello!」が表示されます。

sbt run

パッケージング

jarを作るにはpackageです。

sbt package

これで./target/scala-2.10/scala-ample-001_2.10-1.0.jarができます。

scala ./target/scala-2.10/scala-ample-001_2.10-1.0.jar

で生成したjarのHello#mainが実行されます。
ちゃんとjarファイルにはマニフェストファイルが入っています。

sbt clean

でtargetフォルダがなくなります。
project/targetはなくならないようです。


実験

scalaVersion := "2.10.3"

scalaVersion := "2.10.2"

に変えてもrunできました。

scalaVersion := "2.10"

に変えるとエラーになりました。

scalaVersion := "2.10.5"

に変えるてもエラーになりました。

ログを見ていると、コンパイラをダウンロードしてコンパイルしてくれてるようでした。
なので端末に入っていないscalaのバージョンを指定してもビルドできるので便利そうです。
ちなみに2.10.5はリリースされていないのでエラーになったのですね。

最後にscalaVersionを消してしまった場合もコンパイルでき、この際はおそらくシステムのデフォルトが使われるのでしょう。


git

今回のソースをgit管理をする際は.gitignoreは以下としました。

target

今回のサンプルからGitHub管理していきます。
https://github.com/thachi/scala-sample-001


まとめ

build.sbtに名前とバージョンを書くだけでpackageを作ることができます。
非常に簡単で便利です。


Scala入門記の目次はこちらです。