为了部署某些应用程序,您可能需要从已组装的uberjar中排除某些依赖项。在maven中,您可以通过选择provided
范围来实现。
sbt的不同之处在于,当您为依赖项选择provided
配置时,它还会从run
任务的依赖项中删除依赖项。 stackoverflow上已经存在working solution,但我想提出一些更容易理解的东西(至少对我而言)。
基于scopes上的sbt文档,我希望覆盖程序集任务范围的libraryDependencies
设置键,如下所示:
lazy val providedDependencies = Seq(
"org.apache.storm" % "storm-core" % "1.0.2"
)
lazy val dependencies = Seq(
"org.apache.storm" % "storm-kafka" % "1.0.2"
)
libraryDependencies in assembly := {
dependencies ++ providedDependencies.map(_ % Provided)
}
libraryDependencies := (dependencies ++ providedDependencies)
它似乎不起作用,sbt assembly
命令将暴风雨的罐装入uberjar。有人能解释一下原因吗?