Locked History Actions

Diff for "sbt"

Differences between revisions 29 and 30
Deletions are marked like this. Additions are marked like this.
Line 25: Line 25:

=== プロジェクトの作成 ===

DOS窓で適当なディレクトリを作成し、そこに移り、sbt(実際には先に示したsbt.bat)を起動する。

{{{
mkdir hello
cd hello
sbt
}}}
sbtのコマンドプロンプトになる。このとき、勝手にtargetというディレクトリが作成されている。ここには、sbtの生成物が格納されるらしい。

=== scalaソースの作成と実行 ===

sbt-0.7では、プロジェクト名やら何やらを聞いてきて、勝手にsrc/main/scala等のディレクトリが作成されていたが、0.10以降ではtargetしか作成されない。そこで、src/main/scalaを手で作成する(いったんexitでsbtを抜ける必要がある)。

{{{
mkdir src
mkdir src\main\
mkdir src\main\scala
}}}

src/main/scalaの中にHello.scalaを作成する。

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

もう一度sbtコマンドを実行し、プロンプトからrunを入力すると、上記が実行される。
この状態で、「~ compile」と入力すると、なにやら「ソース変更監視モード」(?)になり、Hello.scalaをエディタで編集して保存する都度勝手にコンパイルするようになる。つまり、保存したソースに構文エラーがあれば、すぐにそれを表示してくれる。

このモードを抜けるにはEnter。抜けたときには既にコンパイルが完了しているので、runですぐに実行できる。

ちなみに、run実行のときに複数のmainメソッドがあった場合には、
{{{
> run

Multiple main classes detected, select one to run:

 [1] Hello
 [2] FooBar

Enter number:
}}}
などと、どれを実行するのか聞いてくる。




Simple Build Tool(SBT)

何をするものか

MavenやIvy+Antのような位置づけのものらしい。依存解決からビルド・配布物の作成までをやってくれるらしい。 Ivyと同じく依存解決はMavenのリポジトリを使うらしい(試しながらの記述なのですべて「らしい」)。

しかも、Scalaで記述されたScala専用のビルドツールらしい。

さらにここが特徴的なのだが、複数のプロジェクトで「何かを共有する」ことはしないらしい。 SBTの配布物は、複数のプロジェクトの共有ライブラリとしてどこかに置いておくことはせず、各プロジェクトのディレクトリのそれぞれにコピーを置いておき、 しかもそれぞれにScalaの処理系やらプロジェクトに必要な依存ライブラリをダウンロードしてしまうらしい(-->これ間違い。ivyのリポジトリで共有管理される)。

複数のプロジェクトで唯一共有されるものと言えば、Javaの処理系のみらしい。

これはこれで理にかなった方法ではある。複数のプロジェクトで共有されるものの整合性を管理するのに苦労するより、プロジェクト専用のものを管理すればよいのだから。ディスクは十分安いので無理に共有することもなかろう。

※sbtは0.7と0.10以降とで非常に大きな変更がある。 書籍や様々なウェブサイトで0.7の機能が紹介されているが、現在(2011/10)のsbtとは大きく異なる。

ステップバイステップ

ここでは、sbtを使用してひと通りのことができるまで(コンパイル、依存ライブラリの取得、テスト、リリース)までを簡単に見てみる。 なお、話が面倒になるので、IDEは使用しない。sbt、DOS窓、普通のエディタを前提にする。

プロジェクトの作成

DOS窓で適当なディレクトリを作成し、そこに移り、sbt(実際には先に示したsbt.bat)を起動する。

mkdir hello
cd hello
sbt

sbtのコマンドプロンプトになる。このとき、勝手にtargetというディレクトリが作成されている。ここには、sbtの生成物が格納されるらしい。

scalaソースの作成と実行

sbt-0.7では、プロジェクト名やら何やらを聞いてきて、勝手にsrc/main/scala等のディレクトリが作成されていたが、0.10以降ではtargetしか作成されない。そこで、src/main/scalaを手で作成する(いったんexitでsbtを抜ける必要がある)。

mkdir src
mkdir src\main\
mkdir src\main\scala

src/main/scalaの中にHello.scalaを作成する。

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

もう一度sbtコマンドを実行し、プロンプトからrunを入力すると、上記が実行される。 この状態で、「~ compile」と入力すると、なにやら「ソース変更監視モード」(?)になり、Hello.scalaをエディタで編集して保存する都度勝手にコンパイルするようになる。つまり、保存したソースに構文エラーがあれば、すぐにそれを表示してくれる。

このモードを抜けるにはEnter。抜けたときには既にコンパイルが完了しているので、runですぐに実行できる。

ちなみに、run実行のときに複数のmainメソッドがあった場合には、

> run

Multiple main classes detected, select one to run:

 [1] Hello
 [2] FooBar

Enter number:

などと、どれを実行するのか聞いてくる。

参考サイト

インストール

0.10以降は、従来のgooglecodeからgihubにウェブサイトが変更されている。https://github.com/harrah/xsbt/wiki/Setup

ダウンロードは、http://typesafe.artifactoryonline.com/typesafe/ivy-releases/org.scala-tools.sbt/sbt-launch/の中の最新のものにすればよい。

ダウンロードしたjarファイルは$SCALA_HOME/libやプロジェクトのlibディレクトリ、あるいはその他クラスパスの通ったところには置いてはいけないという。

次にDOS窓でsbtコマンドが使えるように、sbt.batを作成し、これをPATHの通ったところにおくか、PATHを通す。

java -Xmx512M -jar "(sbt-launch.jarをおいたパス)\sbt-launch.jar" %*

初回にsbtコマンドを実行すると、scala環境を勝手にダウンロードしてくるので、終了するまで待つ必要がある。

IDE用プラグイン