sbtのマルチプロジェクトでサブプロジェクトをimportする

以下のようにcoreとsubのマルチプロジェクトを作成しsubプロジェクトのSampleクラスをcoreプロジェクトのCoreクラスでimportして利用してみたいと思います。

.
├── build.sbt
├── core
│    ├── src
│    │   ├── main
│    │   │   ├── resources
│    │   │   └── scala
│    │   │       └── core
│    │   │           └── Core.scala
│    │   └── test
│    └── target
└── sub
     ├── project
     ├── src
     │   ├── main
     │   │   ├── resources
     │   │   └── scala
     │   │       └── sub
     │   │           └── Sample.scala
     │   └── test
     └── target

build.sbt では以下のように project in file によりプロジェクトのディレクトリを指定します。サブプロジェクトをインポートできるようにするに はdependsOnで参照先のプロジェクトを指定します。

lazy val commonSettings = Seq(
  version := "0.1.0-SNAPSHOT",
  scalaVersion := "2.11.8"
)

lazy val core = (project in file("core"))
  .settings(commonSettings)
  .dependsOn(sub)

lazy val sub = (project in file("sub"))
  .settings(
    commonSettings,
    libraryDependencies ++= Seq(
    )
  )

coreプロジェクト内でSampleクラスをimportする場合は通常通り import sub.Sample で大丈夫です。

sbtコンソール内にてプロジェクトを一覧、切り替えて実行する場合は以下のようになります。

sbt:core> projects
[info] In file: ****/scala/workspace/study_scala/
[info]   * core
[info]     sub
sbt:core> project core
[info] Set current project to core (in build file: ****/scala/workspace/study_scala/)
sbt:core> runMain core.Core