我正在尝试使用SBT和sbt-assembly生成一个胖罐。作为一项要求,我需要在jar中添加其他非托管资源(目录)。问题是2个目录上的文件具有相同的文件名和路径。因此,运行 程序集 会导致copyResources错误 - 重复映射错误。我想要的行为是文件是否已经存在,丢弃另一个文件。有没有办法做到这一点?这有用吗?
unmanagedResources in Compile ~= (_.distinct)
这是一个解决方案吗?有更好的解决方案吗?
答案 0 :(得分:1)
也许程序集插件merge strategy settings对您来说已经足够了。试试这个:
mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) => {
case PathList("path", "to", "file", xs @ _*) =>
(xs map {_.toLowerCase}) match {
case ("myduplicatefile" :: Nil) => MergeStrategy.first
case _ => MergeStrategy.deduplicate
}
case x => old(x)
}