まとめ
前 始める sbt 14/14 ページ
このページで、このガイドを総括してみよう。
sbt を使うのに、理解しなければいけない概念は少しの数しかない。 確かに、これらには多少の学習曲線があるが、 sbt にはこれらの概念以外のことは特にないとも考えることもできる。 sbt は、強力なコア・コンセプトだけを用いて全てを実現している。
もし、この「始める sbt」シリーズをここまで読破したなら、何を知るべきかはもう分かっていると思う。
sbt: コア・コンセプト
- Scala の基本。Scala の構文に慣れていると役立つのは言うまでもない。 Scala の設計者自身による Scalaスケーラブルプログラミング (原著)は、素晴らしい入門書だ。
- .sbt ビルド定義
- ビルド定義は、
Setting
オブジェクトが入った一つの大きなリストであり、Setting
は、sbt がタスクを実行するのに使うキー・値のペアを変換する。 Setting
を作成するには、キーに定義されているメソッドを呼び出す (特に、:=
と<<=
メソッドが大切だ)。- 可変の内部状態は無く、変換があるだけだ。例えば、
Setting
は、 sbt のキー・値のペアのコレクションを新たなコレクションへと変換され、上書き更新はされない。 - 全てのセッティングは、キーにより決定された特定の型の値を持つ。
- タスクは、特殊なセッティングで、タスクを実行するたびに、 キーの値を生成する計算が再実行される。 非タスクのセッティングは、ビルド定義の読み込み時に値が一度だけ計算される。
- ビルド定義は、
-
- それぞれのキーは、異なるスコープごとに別の値を取ることができる。
- スコープ付けには、コンフィギュレーション、プロジェクト、タスクの三つの軸を用いることができる。
- スコープ付けにより、プロジェクトごと、タスクごと、またはコンフィギュレーションごとに、異なる振る舞いを持たせることができる。
- コンフィギュレーションは、メインのもの(
Compile
)や、テスト用のもの(Test
)のようなビルドの種類だ。 - プロジェクト軸は、「ビルド全体」を指すスコープにも設定することができる。
- スコープは、より一般的なスコープにフォールバックし、これを委譲(delegate)という。
-
build.sbt
にセッティングのほとんどを置き、.scala
ビルドファイルは、複数のサブプロジェクトの定義と 共通の値、オブジェクト、メソッドなどをくくり出すのに使う。- ビルド定義そのものも、れっきとした sbt プロジェクトで、
project
ディレクトリを基とする。
- プラグインはビルド定義の拡張だ。
- プラグインは、
addSbtPlugin
メソッドを用いてproject/build.sbt
に追加する。 (プロジェクトのベースディレクトリにあるbuild.sbt
ではないことに注意)
- プラグインは、
以上のうち、一つでも分からないことがあれば、メーリングリスト(英語)で質問してみるか、 もう一度再読してみるか、 sbt のインタラクティブモードで実験してみよう。
じゃ、頑張って!
上級者への注意
sbt はオープンソースであるため、いつでもソースを見れることも忘れずに!