我们正在使用sbt-assembly将我们的依赖jar合并到一个jar文件中。
我们的一个依赖项包含Windows,OSX和Linux的本机非托管依赖项。我们只会在Linux上发布。我们不需要的本机依赖项显着增加了jar的大小。该库仅作为具有所有OS依赖性的单个jar提供,而不是作为不同本机二进制文件的单独jar。
在sbt-assembly期间,我有办法过滤掉这些吗?
修改
我不是要排除整个罐子。我们依赖的jar文件之一包含Windows,OSX和Linux的本机二进制文件。我们需要jar文件,我们需要Linux二进制文件。我们不需要Windows或OSX二进制文件。它们使最终的单个jar文件的大小加倍
我们正在使用" discard"的assemblyMergeStrategy。对于合并罐中的各种其他元素,这可以在一定程度上减小尺寸。 " lib"的内容依赖jar的文件夹似乎没有在该合并中被处理并被丢弃。
答案 0 :(得分:1)
Manged使用assemblyMergeStrategy删除本机依赖项
这不起作用的原因是因为我试图在模式中使用路径。如果您想使用路径,请使用PathList()
(如此处记录https://github.com/sbt/sbt-assembly#merge-strategy)
assemblyMergeStrategy in assembly := {
case PathList("lib", "static", "Windows", xs @ _*) => MergeStrategy.discard
case PathList("lib", "static", "Mac OS X", xs @ _*) => MergeStrategy.discard
...
case _ => MergeStrategy.first
}