Basics

プロジェクト作成

以下の構成でファイル/ディレクトリをあらかじめ作成します

  • buid.sbt
  • project/build.properties
  • src/main/java/
  • src/main/scala/
  • src/main/resources/
  • src/test/java/
  • src/test/scala/
  • src/test/resources/
  • lib/

build.sbt にプロジェクトの情報を記載しておきます。

name := "sandbox"

version := "1.0"

scalaVersion := "2.10.4"

project/build.properties に sbt の情報を記載しておきます。

sbt.version=0.13.5

ソースは src/main/(java|scala) に置きます。src/main/scala/Sandbox.scala を作成してみます。

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

プロジェクトディレクトリ直下で sbt コマンドを実行するとインタラクティブモードでコンソールが立ち上がります。初回起動時は必要なパッケージがダウンロードされます。

% cd /path/to/sbt/project/sandbox
% sbt
...
[info] Done updating.
[info] Set current project to sandbox (in build file:...)
>

run でコンパイルが行われ main ブロックが実行されます。

> run
[info] Compiling 1 Scala source to ...
[info] Running Sandbox
[success] Total time: ....
Hello World

compile でコンパイルのみ行われます。先頭に ~ を付けるとファイル更新を検知して、自動でコンパイルしてくれます。

> ~compile
1. Waiting for source changes... (press enter to interrupt)

lib/

sbt で管理しない jar パッケージは、lib/ に置いておきます。自動で -classpath を通してくれます。

src/main/resources

データファイル関連は src/main/resources に置きます。

src/main/resources/sandbox.properties を読み込む src/main/scala/Sandbox.scala のサンプルコードです。

import java.io.FileInputStream
import java.util.Properties

import scala.collection.JavaConversions._

object Sandbox {
  def main(args:Array[String]) {

    val prop = new Properties()
    prop.load(getClass().getResourceAsStream("/sandbox.properties"))

    prop.stringPropertyNames().foreach { key =>
      println(prop.getProperty(key))
    }
  }
}