Deletions are marked like this. | Additions are marked like this. |
Line 18: | Line 18: |
== 使い方 == | == 準備 == |
Line 20: | Line 20: |
ここではIntelliJ IDEAにSBTプラグインを入れてIntelliJで編集しつつSBTでビルドすることにする。事前に[[IntelliJ IDEA|IntelliJ IDEA]]に示したように、Scalaプラグイン、SBTプラグインが導入されているものとする。これ以降すべてをIntelliJ IDEA上で行うので、DOS窓やシェルは使用しない。 |
ここではIntelliJ IDEAにSBTプラグインを入れてIntelliJで編集しつつSBTでビルドすることにする。。。のだが、まずは普通のscalaソースを作成して実行できるようになるまでを見ていく。 事前に[[IntelliJ IDEA|IntelliJ IDEA]]に示したように、Scalaプラグイン、SBTプラグインが導入されているものとする。これ以降すべてをIntelliJ IDEA上で行うので、DOS窓やシェルは使用しない。 |
Line 61: | Line 63: |
* 左上の「+」アイコンをクリックし、Applicationを選択する(Scalaなんちゃらという選択肢もあるが、この場合は無関係)。 | * 左上の「+」アイコンをクリックし、Applicationを選択する(Scalaなんちゃらという選択肢もあるが、この場合は無関係)※。 |
Line 66: | Line 68: |
この状態でソースを編集して、緑矢印をクリックすれば、変更されたソースが自動的にコンパイルされて実行される。しかし、特にscalaソースのコンパイルは非常に遅い。 |
Simple Build Tool(SBT)
何をするものか
MavenやIvy+Antのような位置づけのものらしい。依存解決からビルド・配布物の作成までをやってくれるらしい。 Ivyと同じく依存解決はMavenのリポジトリを使うらしい(試しながらの記述なのですべて「らしい」)。
しかも、Scalaで記述されたScala専用のビルドツールらしい。
さらにここが特徴的なのだが、複数のプロジェクトで「何かを共有する」ことはしないらしい。 SBTの配布物は、複数のプロジェクトの共有ライブラリとしてどこかに置いておくことはせず、各プロジェクトのディレクトリのそれぞれにコピーを置いておき、 しかもそれぞれにScalaの処理系やらプロジェクトに必要な依存ライブラリをダウンロードしてしまうらしい。
複数のプロジェクトで唯一共有されるものと言えば、Javaの処理系のみらしい。
これはこれで理にかなった方法ではある。複数のプロジェクトで共有されるものの整合性を管理するのに苦労するより、プロジェクト専用のものを管理すればよいのだから。ディスクは十分安いので無理に共有することもなかろう。
準備
ここではIntelliJ IDEAにSBTプラグインを入れてIntelliJで編集しつつSBTでビルドすることにする。。。のだが、まずは普通のscalaソースを作成して実行できるようになるまでを見ていく。
事前に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」にもそれが現れる。
HelloWorldの作成と実行
HelloWorldを作成して実行できるまでを確認する。
- 先のソースフォルダ「src/main/scala」を右クリックしてNew/Scala classを選択。適当にScalaソースファイルを作成する
object Sample { def main(args: Array[String]) { println("hello, world") } }
- Run/Edit Configurationsメニューを選択する。
- 左上の「+」アイコンをクリックし、Applicationを選択する(Scalaなんちゃらという選択肢もあるが、この場合は無関係)※。
- 一番上のNameとMain classを指定する。上の例の場合は共にSampleでよい。OKをクリックする。
- ツールバーに緑の矢印が表示されるので、その左側が「Sample」であることを確認して、緑矢印を押す。
※Run/Edit ConfigurationsメニューのDefaultsは、あくまでも各コンフィギュレーションのデフォルト値を指定するものなので、Defaults上で設定を行っても新しいコンフィギュレーションは作成されない。
この状態でソースを編集して、緑矢印をクリックすれば、変更されたソースが自動的にコンパイルされて実行される。しかし、特にscalaソースのコンパイルは非常に遅い。