Revision 7 as of 2011-05-03 02:14:02

Clear message
Locked History Actions

sbt

Simple Build Tool(SBT)

何をするものか

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

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

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

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

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

使い方

ここではIntelliJ IDEAにSBTプラグインを入れてIntelliJで編集しつつSBTでビルドすることにする。事前にIntelliJ IDEAに示したように、Scalaプラグイン、SBTプラグインが導入されているものとする。これ以降すべてをIntelliJ IDEA上で行うので、DOS窓やシェルは使用しない。

プロジェクトの作成と最小限の設定

IntelliJ IDEAでは一つのプロジェクト中に複数のモジュールを作成することができるのだが(Eclipseで言えば一つのワークスペース中に複数のプロジェクト)、一つのプロジェクトについて一つのモジュールという形式もある。SBTプラグインを使用する場合は、後者の形式でないとうまくいかないようだ。以下のようにする。

  • File/New Projectメニューを選択
  • Create Project From Scratchを選択。次へ
  • トップのNameにプロジェクト名を入力する。他の部分をいじらなければ、その名前のプロジェクトが作成され、同じ名前のモジュールが作成される。モジュールのタイプは「Java Module」にしておく。次へ
  • Do not create source directoryを選択する。ソースディレクトリはSBTの形式にするので、通常のソースディレクトリは作成しない。次へ
  • Scalaを選択する。終了する

新しいプロジェクトには.ideaというディレクトリのみが存在し、その中になにやら設定ファイルがある。次に、sbtプラグインを使用してsbtのプロジェクトとして作成する。

  • 左下の「SBT Console」をクリックし、緑のボタンをクリックする。
  • プロジェクトを作成するかと聞かれるので「y」。
  • プロジェクト名、組織名を適当に入力する。sbt側はIntelliJ側のプロジェクト名のことなど知らないので、入力を求められる。
  • このプロジェクトのバージョン、使用するScalaのバージョン、SBT自体のバージョンを入力する。
  • IntelliJ IDEAの表示を見るとlib,project,src,targetというディレクトリが作成されたことがわかる。
  • SBT Consoleは「>」というプロンプトを出し、コマンド受付状態であることを示す。そのまま何らかのコマンドを入力してもよいし、exitして抜けてもよい。抜けた場合はもう一度緑のボタンを押してコマンドモードに入る。この場合、プロジェクトは作成済みなので、もう一度作成されることはない。

通常のIntelliJプロジェクトではsrc直下にscalaのソースを格納するが、SBTの場合はsrc/main/scalaになる。IntelliJ側はこのことを知らないので、ここにソースを格納することを教えてやる。

  • File/Project Structureメニューを選択する。
  • 左側でModulesを選択し、Sourcesタブを選択。
  • 右側のディレクトリツリーでソースディレクトリを選択するのだが、このやり方は少々変わっている。src/main/scalaをクリックした状態で、上にある水色の「Sources」ボタンを押す。すると、ディレクトリツリー上のscalaが水色になると同時に、左側の「Source Folders」にもそれが現れる。