1. ディレクトリ構造

ディレクトリ構造 

このページでは、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 ソースコードを配置できるというのは奇妙なトリックに見えるかもしれませんが、この事実は後ほど関連してきます。

sbt ビルド定義ファイル 

ビルド定義は、プロジェクトのベースディレクトリにある build.sbt (実際には *.sbt という名前のファイル) に記述されています。

build.sbt

ビルドサポートファイル 

build.sbt に加えて、project ディレクトリには、ヘルパーオブジェクトとワンオフプラグインを定義する .scala ファイルを含めることができます。 詳細については、ビルドの構成を参照してください。

build.sbt
project/
  Dependencies.scala

project/ 内に .sbt ファイルが表示される場合がありますが、これらはプロジェクトのベースディレクトリにある .sbt ファイルと同等ではありません。 これを説明するには、まずいくつかの背景情報が必要になるため、後ほど説明します。

ビルド成果物 

生成されたファイル (コンパイルされたクラス、パッケージ化された jar、管理ファイル、キャッシュ、およびドキュメント) は、デフォルトで target ディレクトリに書き込まれます。

バージョン管理の設定 

.gitignore (または他のバージョン管理システムの同等のファイル) には、以下を含める必要があります。

target/

これは意図的に末尾に / が付いています (ディレクトリのみと一致させるため)。また、意図的に先頭に / が付いていません (プレーンな target/ に加えて project/target/ とも一致させるため)。