繁体   English   中英

sbt-assembly:如何将依赖jar连接到主jar?

[英]sbt-assembly: how to link dependencies jar with main jar?

我在scala中编码并使用SBT和sbt-assembly插件。 我的项目有很多外部库,因此sbt-assembly需要很长时间来打包JAR文件。 我想为我的代码和依赖项创建一个单独的jar文件。 因此,我可以简单地重新编译并重新打包我的代码。 这个怎么做?

迄今取得的进展:

build.sbt的以下命令阻止sbt-assembly打包库:

assembleArtifact in packageScala := false

assembleArtifact in packageDependency := false

然后可以通过传递以下命令来构建单独的jar: assemblyassembly-package-scalaassembly-package-dependency 他们制作了三个罐子:一个包含我的程序,一个包含scala库,另一个包含所有依赖项。

但是,jar文件不再可执行,因为它没有在单独的jar文件中看到依赖项。 我想我需要为assembly-sbt添加一个类路径,但我不知道该怎么做。

请参阅设置类路径仍然无法找到外部Jar 甲骨文说:

使用此选项时,JAR文件是所有用户类的源,并忽略其他用户类路径设置。

所以,你必须说:

java -cp "foo-assembly-0.1-deps.jar:foo-assembly-0.1.jar" Main

其中Main是主类的名称,并且:是OS上的文件分隔符( ;在Windows上)。

目前在assembly-package-scala似乎存在一个错误并且它是空的,但它应该没关系,因为assembly-package-dependency包含Scala库。

https://github.com/xerial/sbt-pack上使用sbt-pack插件。 到目前为止,我发现它是打包项目和依赖项的最简洁方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM