sbt assembly 在提供的依赖项之间切换

sbt assembly switch between provided dependencies

我正在开发一个 spark 应用程序。要在本地测试它,我想 运行 sbt 运行。这需要依赖项在本地可用。但我也想使用 sbt assembly 生成一个可用于 spark-submit 的 jar,该 jar 应该只包含一些依赖项,例如不包括 spark 依赖项。

当我在 build.sbt 中将依赖项标记为 % "provided" 时,它不再通过 sbt run

可用

如果排除在主程序中使用的 jar built.sbt

excludedJars in assembly := {
  val cp = (fullClasspath in assembly).value
  cp filter {f =>
     f.data.getName.contains("spark"),
     f.data.getName.startsWith("jar_name")
  }
}