%“提供”配置
从胖 jar 中排除 jar 的第一个选项是"provided"
对库依赖项使用配置。"provided"
来自 Maven提供的范围,定义如下:
这很像compile
,但表示您希望 JDK 或容器在运行时提供依赖项。例如,在为 Java 企业版构建 Web 应用程序时,您可以将 Servlet API 和相关 Java EE API 的依赖设置为范围provided
,因为 Web 容器提供了这些类。此范围仅在编译和测试类路径上可用,并且不可传递。
由于您将代码部署到容器(在本例中为 Spark),因此与您的评论相反,您可能需要 Scala 标准库和其他库 jar(例如,如果您使用了 Dispatch)。这不会影响run
或test
。
包装箱
如果你只想要你的源代码,而不需要 Scala 标准库或其他库依赖项,那将被packageBin
内置到 sbt 中。这个打包的 jar 可以与您可以使用 sbt-assembly 制作的仅依赖 jar 结合使用assemblyPackageDependency
。
组装中的排除罐子
最后的选择是使用excludedJars in assembly
:
excludedJars in assembly := {
val cp = (fullClasspath in assembly).value
cp filter {_.data.getName == "spark-core_2.9.3-0.8.0-incubating.jar"}
}