Skip to content

Instantly share code, notes, and snippets.

@sap1ens
Created February 22, 2014 01:22
Show Gist options
  • Save sap1ens/9147118 to your computer and use it in GitHub Desktop.
Save sap1ens/9147118 to your computer and use it in GitHub Desktop.
Custom sbt-assembly merge strategy (fixes for spring, cglib, mockito)
val customMergeStrategy: String => MergeStrategy = {
case x if Assembly.isConfigFile(x) =>
MergeStrategy.concat
case PathList(ps @ _*) if Assembly.isReadme(ps.last) || Assembly.isLicenseFile(ps.last) =>
MergeStrategy.rename
case PathList("META-INF", xs @ _*) =>
(xs map {_.toLowerCase}) match {
case ("manifest.mf" :: Nil) | ("index.list" :: Nil) | ("dependencies" :: Nil) =>
MergeStrategy.discard
case ps @ (x :: xs) if ps.last.endsWith(".sf") || ps.last.endsWith(".dsa") =>
MergeStrategy.discard
case "plexus" :: xs =>
MergeStrategy.discard
case "spring.tooling" :: xs =>
MergeStrategy.discard
case "services" :: xs =>
MergeStrategy.filterDistinctLines
case ("spring.schemas" :: Nil) | ("spring.handlers" :: Nil) =>
MergeStrategy.filterDistinctLines
case _ => MergeStrategy.deduplicate
}
case "asm-license.txt" | "overview.html" =>
MergeStrategy.discard
case _ => MergeStrategy.deduplicate
}
mergeStrategy in assembly := customMergeStrategy
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment