使用SBT包在JAR中包含依赖项

BAR*_*BAR 10 scala sbt

显然项目依赖项没有被打包到生成的jar中:

sbt package
Run Code Online (Sandbox Code Playgroud)

如何包含依赖项?

pra*_*upd 11

好吧,我使用sbt-assembly插件来创建带依赖关系的jar,

(1)添加sbt-assemblyprojects/assembly.sbt

echo 'addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.8")' > project/assembly.sbt
Run Code Online (Sandbox Code Playgroud)

(2) 运行sbt clean assembly构建jar.这将创建${name}-assembly-${version}.jartarget/scala-${scalaVersion}

(3)只有在情况下,你会得到臭名昭著的去重复的错误,用assemblyMergeStrategy描述在这里

  • 注意,sbt-assembly不适用于scala 2.11(并且永远不会) (2认同)
  • @HansHarhoff“从不”是讲故事的人最常使用的词。>> https://github.com/sbt/sbt-assemble/issues/115,https://index.scala-lang.org/sbt/sbt- assembly/sbt- assembly/0.14.5?target=_2.12_1.0 不会让我们浪费时间。 (2认同)

djs*_*dog 7

有一个名为onejar的项目,它将项目及其所有依赖项打包到一个jar文件中.还有一个SBT插件:

https://github.com/sbt/sbt-onejar

但是,如果您只是想创建一个标准包(deb,rpm等),那么有sbt-native-packager:

https://github.com/sbt/sbt-native-packager

它可以将所有依赖项放入Linux包中,并添加适当的包装器以加载所有依赖项并启动程序或服务.