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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/32859316/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-22 07:40:11  来源:igfitidea点击:

Include Dependencies in JAR using SBT package

scalasbt

提问by BAR

Apparently project dependencies are not being packaged into the jar generated by:

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

sbt package

How can dependencies be included?

如何包含依赖项?

采纳答案by djsumdog

There's a project called onejar that will package a project and all its dependencies into a single jar file. There is an SBT plugin as well:

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

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

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

However if you're just looking to create a standard package (deb, rpm, etc.) there is sbt-native-packager:

但是,如果您只是想创建标准包(deb、rpm 等),则可以使用 sbt-native-packager:

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

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

It can place all your dependencies into a Linux package and add the appropriate wrappers to load all your dependencies and start your program or service.

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

回答by prayagupd

Well, I use sbt-assemblypluginto create jar with dependencies,

好吧,我使用sbt-assembly插件来创建具有依赖项的 jar,

(1) add sbt-assemblyto projects/assembly.sbt

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

echo 'addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.8")' > project/assembly.sbt

(2)run sbt clean assemblyto build the jar. It will create ${name}-assembly-${version}.jarin target/scala-${scalaVersion}

(2)运行sbt clean assembly以构建 jar。它会${name}-assembly-${version}.jartarget/scala-${scalaVersion}

(3) Only in case you get infamous de-duplicate error, use assemblyMergeStrategyas described in here

(3) 仅当您遇到臭名昭著的重复数据删除错误时,请assemblyMergeStrategy按照此处的说明使用