本番環境ではライブラリがインストールされているからそれを使いたいけど、ローカルで実行/テストするときは環境作るの面倒だからsbt管理のライブラリを使いたいよってケースです。
build.sbt
で以下のように設定するとsbt run
およびsbt run-main
でprovidedにしたライブラリもクラスパスに含めて実行されます。
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "1.3.1" % "provided",
"org.apache.spark" %% "spark-mllib" % "1.3.1" % "provided",
"com.github.scopt" %% "scopt" % "3.3.0"
)
run in Compile <<= Defaults.runTask(fullClasspath in Compile, mainClass in (Compile, run), runner in (Compile, run))
runMain in Compile <<= Defaults.runMainTask(fullClasspath in Compile, runner in (Compile, run))
参考
以下の記事だとsbt run-main
のときにクラスパスに含まれないので、それだけ補足しました。