以下は古いです
※sbtは0.7と0.10以降とで非常に大きな変更がある。 書籍や様々なウェブサイトで0.7の機能が紹介されているが、現在(2011/10)のsbtとは大きく異なる。
何をするものか
MavenやIvy+Antのような位置づけのもの。依存解決からビルド・配布物の作成までをやってくれる。 内部ではIvyが使用されており、ローカルキャッシュもIvyと共用される。
メリット
すべてをScalaで記述できること、これが最も大きい。
おかしなxmlとそれを拡張するためのJavaコードという組み合わせは不要で、antに例えればbuild.xmlとタスクを統一的にScalaで記述できる。
デメリット
情報が少ない。マニュアル(英語)は、かなりの分量が用意されており、比較的親切な方なのだが、それだけでは全く使いものにはならない。
キー(antでいえばタスク?)それぞれのマニュアルが無いため、使い方を知るには相当苦労する。 しかも、作者はソースコードに全くコメントをつけていないため、scaladocを見たところであまり参考にはならない。
キーを組み合わせて新しいことをやろうとしたり、新たなタスクやプラグイン(タスクの一種)を作成するには多大な努力が必要になる(と思われる)。
学習のしかた
マニュアルを全文読んでも概念的な事柄がわかるだけで、実用にはほど遠いと思われる。 sbt本体のソースコードもほぼ意味不明。 おそらくは、サードパーティ製プラグインのソースコードを読むのが一番の近道ではないかと思われる。 やりたいことと、その実現方法がわかる。
参考サイト
ドキュメント翻訳
Getting Started
Detailed Topics
- Artifacts what to publish
- Best Practices
- Command Line Reference
- Compiler Plugins
- Console Project
- Cross Build
- Forking
- Inspecting Settings
- Java Sources
- Library Management
- Local Scala
- Mapping Files
- Migrating to 0.10+
- Parsing Input
- Paths
- Process
- Publishing
- Resolvers
- Running Project Code
- Scripts
- Setup Notes
- Testing
- Triggered Execution
- Update Report
チュートリアル
IDE用プラグイン
sbt/IntelliJ(sbt0.7に基づいている)
機能拡張プラグイン
sbt-assembly アプリと依存ライブラリを一つの大きなjarにする