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