我正在尝试使用 SBT 和 sbt-assembly 生成一个 fat jar。作为一项要求,我需要在 jar 中添加其他非托管资源(目录)。问题是 2 个目录中的文件具有相同的文件名和路径。因此运行 assembly 会导致 copyResources 错误 - 重复映射错误。我想要的行为是如果文件已经存在,则丢弃另一个文件。有没有办法做到这一点?这行得通吗?
unmanagedResources in Compile ~= (_.distinct)
这是一个解决方案吗?有更好的解决方案吗?
最佳答案
可能是程序集插件的 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)
}
关于java - SBT - 有没有办法忽略 copyResources 中的重复映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24037395/