サーチ…
同じビルド内の複数のプロジェクト(サブプロジェクト)
ビルドでは、複数のソースディレクトリを組み合わせることがあります。それぞれのディレクトリは独自の「プロジェクト」です。たとえば、次のようなビルド構造があります。
projectName / build.sbtプロジェクト/ src / main / ...テスト/ ...コア/ src / main / ...テスト/ ... webapp / src / main / ... test / ...
上記のプロジェクトでは、 projectName/src
コードはroot
プロジェクトと見なされます。他の2つのモジュール、または 'サブプロジェクト'、 core
とwebapp
ます。
サブプロジェクトの設定は、プロジェクトにサブディレクトリが指定されていることを除いて、ルートプロジェクトの設定と同様です。この例は、 core
プロジェクトとwebapp
プロジェクトを集約するルートプロジェクトを示しています。
lazy val root = (project in file(".")).aggregate(core,webapp).dependsOn(core, webapp)
lazy val core = (project in file("core"))
lazy val webapp = (project in file("webapp")).dependsOn(core)
file()
渡される値は、プロジェクトルートに関連するディレクトリです。
webapp
プロジェクトは、上記の行に指定されたcore
値を取るdependsOn
節で示されるcore
プロジェクトに依存します。 dependsOn
とlazy
評価は、プロジェクトがそれらを利用する前に依存関係が利用可能であることを保証します。この場合、 webapp
依存するcore
、そのcore
ビルドがコンパイルしようとする前にコンパイルされるwebapp
。
aggregate
は、1つのプロジェクトで定義されたタスクを、それを集約するプロジェクトで使用できるようにします。例えば、実行compile
にroot
も実行するプロジェクトcompile
にcore
とwebapp
。
プロジェクトでのマクロの構成
build.sbt
ファイル(またはプロジェクトが別の場所にある場合はプロジェクトが定義されている場所)に、次の設定を追加します。
scalacOptions += "-language:experimental.macros"
たとえば、プロジェクトは次のように定義されます。
lazy val main = project.in(file(".")) // root project
.settings(scalacOptions += "-language:experimental.macros",
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full))
上記の例では、Scala 2.10.x
完全なサポートを提供するためにparadise
プラグインが含まれています。
ディスプレイの設定
SBTコンソールで、プロジェクトのすべての定義可能な設定を一覧表示するには:
settings
または、サブプロジェクト(たとえば、 webapp
という名前の設定)を取得するには、次のようにします。
project webapp
settings
上記の最初の行は、特定のサブプロジェクトにナビゲートします。
特定の設定( organization
)の値を表示するには:
show organization
これにより、その設定の値が表示されます。