このページは、 sbt をインストールして、 Hello, World を読んだことを前提とする。
sbt 用語では「ベースディレクトリ(base directory) 」はプロジェクトが入ったディレクトリを指す。
Hello, World での例のように、hello/build.sbt と hello/hw.scala が入った
hello プロジェクトを作った場合、ベースディレクトリは hello となる。
ソースコードは hello/hw.scala のようにプロジェクトのベースディレクトリに置くこともできる。
しかし、現実のプロジェクトでは、ほとんどの場合、そのようにはしないだろう。きっとプロジェクトがゴチャゴチャになってしまうからだ。
sbt はデフォルトで Maven と同じディレクトリ構造を使う(全てのパスはベースディレクトリからの相対パスとする):
src/
main/
resources/
<メインの jar に含むデータファイル>
scala/
<メインの Scala ソースファイル>
java/
<メインの Java ソースファイル>
test/
resources/
<テストの jar に含むデータファイル>
scala/
<テストの Scala ソースファイル>
java/
<テストの Java ソースファイル>
src/ 内の他のディレクトリは無視される。また、隠しディレクトリも無視される。
プロジェクトのベースディレクトリに build.sbt を置くことはご理解いただけたかと思う。
それ以外の sbt 関連の設定ファイルは project 配下のサブディレクトリに置かれる。
project には .scala ファイルを含むことができ、それは .sbt ファイルと組み合わさって一つの完全なビルド定義を構成する。
詳しくは、ビルドの整理を参照。
build.sbt
project/
Build.scala
project 内に .sbt があるのを見ることがあるかもしれないが、それはプロジェクトのベースディレクトリ下の .sbt とはまた別物だ。
これに関しては他に前提となる知識が必要なので後ほど説明する。
生成されたファイル(コンパイルされたクラスファイル、パッケージ化された jar ファイル、managed 配下のファイル、キャッシュとドキュメンテーション)は、デフォルトでは target ディレクトリに出力される。
.gitignore (もしくは、他のバージョン管理システムの同様のファイル)には以下を追加しておくとよいだろう:
target/
ここでは(ディレクトリだけにマッチさせるために)語尾の / は意図的につけていて、一方で
(普通の target/ に加えて project/target/ にもマッチさせるために)先頭の / は意図的に
つけていないことに注意。