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

  • 8
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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