Posted at

sbt runでprovidedな依存ライブラリをクラスパスに含める

More than 3 years have passed since last update.

本番環境ではライブラリがインストールされているからそれを使いたいけど、ローカルで実行/テストするときは環境作るの面倒だから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のときにクラスパスに含まれないので、それだけ補足しました。