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