Java SBT-有没有办法忽略copyResources中的重复映射?
我正在尝试使用SBT和SBT组件生成一个胖jar。作为一项要求,我需要在jar中添加其他非托管资源(目录)。问题是两个目录中的文件具有相同的文件名和路径。因此,运行程序集会导致copyResources错误-重复映射错误。我想要的行为是,如果文件已经存在,则丢弃另一个文件。有办法做到这一点吗?这样行吗Java SBT-有没有办法忽略copyResources中的重复映射?,java,scala,sbt,sbt-assembly,Java,Scala,Sbt,Sbt Assembly,我正在尝试使用SBT和SBT组件生成一个胖jar。作为一项要求,我需要在jar中添加其他非托管资源(目录)。问题是两个目录中的文件具有相同的文件名和路径。因此,运行程序集会导致copyResources错误-重复映射错误。我想要的行为是,如果文件已经存在,则丢弃另一个文件。有办法做到这一点吗?这样行吗 unmanagedResources in Compile ~= (_.distinct) 这是一个解决方案吗?有更好的解决方案吗?也许汇编插件对您来说就足够了。试试这个: mergeStrat
unmanagedResources in Compile ~= (_.distinct)
这是一个解决方案吗?有更好的解决方案吗?也许汇编插件对您来说就足够了。试试这个:
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)
}
在程序集中合并策略
(xs映射{{toLowerCase})匹配{
案例(“myduplicatefile”::Nil)=>MergeStrategy.first
案例=>MergeStrategy.deduplicate
}
案例x=>旧(x)
}