3

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

unmanagedResources in Compile ~= (_.distinct)

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

4

1 回答 1

1

也许组装插件的合并策略设置对你来说已经足够了。尝试这个:

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)
}
于 2014-06-05T05:49:31.747 回答