assemblyPackageDependency用のassemblyMergeStrategyを入れる

以前,sbtでfat-jarを作る時に,毎回全ファイルのjarを作るのを止めて作業を効率化する方法を紹介したのですが,
ScalaでSparkのプログラムを作る作業を高速化する. - なぜか数学者にはワイン好きが多い

こんなエラーが出ることがあります.

[error] 426 errors were encountered during merge
[error] stack trace is suppressed; run 'last assemblyPackageDependency' for the full output
[error] (assemblyPackageDependency) deduplicate: different file contents found in the following:
[error] \null\Coursier\cache\v1\https\repo1.maven.org\maven2\org\apache\poi\poi\5.0.0\poi-5.0.0.jar:META-INF/versions/9/module-info.class
[error] \null\Coursier\cache\v1\https\repo1.maven.org\maven2\org\apache\xmlbeans\xmlbeans\4.0.0\xmlbeans-4.0.0.jar:META-INF/versions/9/module-info.class

重複ファイルのエラーが出るときは,build.sbtに以下のような記述を入れる:

assemblyMergeStrategy in assemblyPackageDependency := {
  case PathList("javax", "servlet", xs @ _*)         => MergeStrategy.first
  case PathList(ps @ _*) if ps.last endsWith ".class" => MergeStrategy.first
  case "UnusedStubClass.class"  => MergeStrategy.first
  case "application.conf"                            => MergeStrategy.concat
  case "unwanted.txt"                                => MergeStrategy.discard
  case x =>
    val oldStrategy = (assemblyMergeStrategy in assembly).value
    oldStrategy(x)
}

記述の中身は,ドキュメント
GitHub - sbt/sbt-assembly: Deploy über-JARs. Restart processes. (port of codahale/assembly-sbt)
のMerge Strategyの記載を参考に,適宜変更してほしい.