SBT - 有没有办法忽略copyResources中的重复映射?

时间:2014-06-04 12:25:06

标签: java scala sbt sbt-assembly

我正在尝试使用SBT和sbt-assembly生成一个胖罐。作为一项要求,我需要在jar中添加其他非托管资源(目录)。问题是2个目录上的文件具有相同的文件名和路径。因此,运行 程序集 会导致copyResources错误 - 重复映射错误。我想要的行为是文件是否已经存在,丢弃另一个文件。有没有办法做到这一点?这有用吗?

unmanagedResources in Compile ~= (_.distinct)

这是一个解决方案吗?有更好的解决方案吗?

1 个答案:

答案 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)
}