我有下一个build.sbt文件:
name := "olbico-spark-solution"
version := "0.2"
scalaVersion := "2.11.8"
resolvers += "Typesafe ivy repository" at "https://repo.typesafe.com/typesafe/ivy-releases/"
resolvers += "Typesafe maven repository" at "https://repo.typesafe.com/typesafe/maven-releases/"
mainClass in (Compile, run) := Some("com.olbico.spark.MergeManager")
mainClass in (Compile, packageBin) := Some("com.olbico.spark.MergeManager")
mappings in (Compile, packageBin) += {
(baseDirectory.value / "src/main/config/current.conf") -> "config/current.conf"
}
libraryDependencies ++= {
val sparkVer = "2.2.0"
Seq(
"org.apache.spark" %% "spark-core" % sparkVer % "provided" withSources(),
"org.apache.spark" %% "spark-sql" % sparkVer % "provided" withSources(),
"com.typesafe" % "config" % "1.3.1" withSources()
)
}
我想要实现的是向com.typesafe.config添加依赖项。使用当前的sbt配置,我希望最终的字节码具有以下结构:
~/test-spark-solution/target/scala-2.11/classes
-com
-olbico
-spark
JobManager$class.class
JobManager.class
... more classes
-typesafe
-config
Optional.class
DefaultConfigLoadingStrategy.class
... more classes
或者至少将config-1.3.1.jar添加到最终的包jar中。我接受了这两种解决方案,尽管现在还没有完成。在〜/ olbico-spark-solution / target / scala-2.11 / classes下我有以下结构:
-com
-olbico
-spark
JobManager$class.class
JobManager.class
... more classes
包装后,包装罐中也没有包含config-1.3.1.jar。使用SBT向项目添加单个依赖项的最佳方法是什么?
Java / Scala世界中的普通包装并不是要创建可部署的可执行文件,而只是创建模块的存档:您需要使用SBT Assembly或SBT包来获得完全可部署的jar。