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