マルチプロジェクト ビルドの例を次に示します。ルート プロジェクトは、それらをすべてまとめてコンパイルしたり、まとめてパッケージ化したりする場合に備えて、それらをすべて「集約」します。「coreLibrary」プロジェクトは、「coreA」と「coreB」のコードに依存します。
import sbt.Keys._
import sbt._
name := "MultiProject"
lazy val root = project.in(file(".")).aggregate(coreA, coreB, coreLibrary)
lazy val coreA = Project("CoreA", file("core-a")).settings(
organization := "org.me",
version := "0.1-SNAPSHOT"
)
lazy val coreB = Project("CoreB", file("core-b")).settings(
organization := "org.me",
libraryDependencies += "org.apache.kafka" %% "kafka" % "0.8.2-beta",
version := "0.3-SNAPSHOT"
)
lazy val coreLibrary = Project("UberCore", file("core-main")).dependsOn(coreA, coreB).settings(
organization := "org.me",
version := "0.2-SNAPSHOT"
)
(たとえば) コマンド ラインから各プロジェクトをコンパイルできます。
>sbt CoreB/compile
または、これをインタラクティブに実行できます。
>sbt
>project CoreB
>compile