ディレクトリ構造 

このページは、君が sbt をインストールして、 Hello, World を見たことを前提にする。

ベースディレクトリ 

sbt 用語では「ベースディレクトリ」(base directory) はプロジェクトが入ったディレクトリを指す。 Hello, World での例のように、hello/build.sbthello/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/ 内の他のディレクトリは無視される。あとは、隠れディレクトリも無視される。

sbt ビルド定義ファイル 

プロジェクトのベースディレクトリに build.sbt があるのはもう分かった。 他の sbt 関連のファイルは project サブディレクトリに置かれる。

project には .scala ファイルを含むことができ、それは .sbt ファイルと 組み合わさって一つのビルド定義を構成する。詳しくは、.scala ビルド定義を参照。

build.sbt
project/
  Build.scala

project 内に .sbt があるのを見ることがあるかもしれないけど、それはプロジェクトの ベースディレクトリ下の .sbt とは別物だ。これに関しても、他に前提となる知識が必要なので、 後で説明する

ビルド成果物 

生成されたファイル(コンパイルされたクラス、パッケージ化された jar ファイル、マネージファイル、キャッシュ、とドキュメンテーション)は、デフォルトで target ディレクトリに置かれる。

バージョン管理の設定 

君の .gitignore (もしくは、他のバージョン管理システムの同様のファイル)は以下を含むべきだ:

target/

これは(ディレクトリだけにマッチさせるために)語尾の / はつけているけど、 (普通の target/ に加えて project/target/ にもマッチさせるために)先頭の / は意図して つけていないことに注意。