前回のエントリでIntelliJ IDEAでsbtを利用したScalaの開発を行う環境を整えました。
その際には、sbtのpackage
を実行してjarの生成を行いました。
ただし、生成されるjarはFat Jarではありません(依存する各種jarは含んでいない)。
本エントリでは、sbt-assembly
を用いてFat Jar(uber-jar)を生成する手順メモを記載しておきます。
今回のサンプルではbuil.sbt
の内容は(初期状態では)以下のようになっているものとします
name := "SbtTrial" version := "1.0.0" scalaVersion := "2.12.1" libraryDependencies ++= Seq( "org.apache.commons" % "commons-lang3" % "3.1", "commons-io" % "commons-io" % "2.4" )
sbt-assemblyを利用すための設定の記述
sbt-assemblyを利用するには、plugins.sbt
に以下の内容を追記します。
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.3")
jarの生成
IntelliJ IDEA上でSBT Consoleを起動した状態にします。
起動したコンソール上で、assembly
と入力して実行します。
こうすると依存するライブリも含んだ形となっているjar(Fat Jar)がtargetディレクトリ内に生成されます。
ちなみに、jarの名前はSbtTrial-assembly-1.0.0.jar
となっています。
jarの名前を指定したい場合
Fat Jarとして生成するjarの名前を自分で指定したい場合もあると思います。
その場合は、build.sbt
で「assemblyJarName」を定義してそこにjarの名前を記述します。
ここでは、プロジェクト名とバージョンを付与したjar名にするようにしました。
assemblyJarName := s"${name.value}-${version.value}.jar"
この状態で、assembly
を実行してビルドすると、SbtTrial-1.0.0.jar
という名前のjarが生成されます