このページは、君が 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
ファイルと
組み合わさって一つのビルド定義を構成する。詳しくは、.scala ビルド定義を参照。
build.sbt
project/
Build.scala
project
内に .sbt
があるのを見ることがあるかもしれないけど、それはプロジェクトの
ベースディレクトリ下の .sbt
とは別物だ。これに関しても、他に前提となる知識が必要なので、
後で説明する。
生成されたファイル(コンパイルされたクラス、パッケージ化された jar ファイル、マネージファイル、キャッシュ、とドキュメンテーション)は、デフォルトで target
ディレクトリに置かれる。
君の .gitignore
(もしくは、他のバージョン管理システムの同様のファイル)は以下を含むべきだ:
target/
これは(ディレクトリだけにマッチさせるために)語尾の /
はつけているけど、
(普通の target/
に加えて project/target/
にもマッチさせるために)先頭の /
は意図して
つけていないことに注意。