すべての依存ライブラリを使用してファット jar を生成することはできませんが、scala ライブラリは使用できません。build.sbt ファイルの次の構成があります。
import AssemblyKeys._
assemblySettings
jarName in assembly := "test-project.jar"
assemblyOption in assembly ~= { _.copy(includeScala = false) }
name := "test-project"
version := "1.0"
scalaVersion := "2.10.4"
resolvers += Resolver.sonatypeRepo("public")
resolvers += "SnowPlow Repo" at "http://maven.snplow.com/releases/"
resolvers += "Twitter Maven Repo" at "http://maven.twttr.com/"
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "1.2.1" % "provided",
"org.apache.avro" % "avro" % "1.7.7" % "provided" withSources(),
"org.apache.avro" % "avro-mapred" % "1.7.7" % "provided" withSources(),
"com.github.nscala-time" %% "nscala-time" % "1.8.0" withSources(),
"com.snowplowanalytics" %% "scala-maxmind-iplookups" % "0.2.0" withSources(),
"com.twitter" %% "algebird-core" % "0.9.0" withSources()
)
sbt アセンブリを実行した後test-project.jar
、プロジェクト コードとほぼすべてのライブラリが含まれています。唯一欠けているのは"com.snowplowanalytics" %% "scala-maxmind-iplookups" % "0.2.0
依存関係です - これは奇妙です。assemblyOption in assembly ~= { _.copy(includeScala = false) }
さらに、build.sbt config の行を削除すると、完全な jar (すべてのライブラリを含む) だけでなく、不要な scala ライブラリ クラスも受け取ります。
sbt
ファット jar を生成するためのsbt-assembly
プラグインを作成して、scala ライブラリを使用せずに他のすべての依存ライブラリを使用する方法。
sbt version: 0.13.5
sbt-assembly version: 0.11.2