[英]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: assembly
, assembly-package-scala
和assembly-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.