このページでは、sbt をインストールし、sbt の例を見たことを前提としています。
sbt の用語では、「ベースディレクトリ」とはプロジェクトを含むディレクトリです。sbt の例にあるように、/tmp/foo-build/build.sbt
を含む hello
プロジェクトを作成した場合、/tmp/foo-build
がベースディレクトリになります。
sbt は、ソースファイルのディレクトリ構造としてデフォルトで Maven と同じ構造を使用します (すべてのパスはベースディレクトリからの相対パスです)。
src/
main/
resources/
<files to include in main jar here>
scala/
<main Scala sources>
scala-2.12/
<main Scala 2.12 specific sources>
java/
<main Java sources>
test/
resources
<files to include in test jar here>
scala/
<test Scala sources>
scala-2.12/
<test Scala 2.12 specific sources>
java/
<test Java sources>
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、管理ファイル、キャッシュ、およびドキュメント) は、デフォルトで target
ディレクトリに書き込まれます。
.gitignore
(または他のバージョン管理システムの同等のファイル) には、以下を含める必要があります。
target/
これは意図的に末尾に /
が付いています (ディレクトリのみと一致させるため)。また、意図的に先頭に /
が付いていません (プレーンな target/
に加えて project/target/
とも一致させるため)。