The First Cry of Atom Today is the first day of the rest of my life.

Exclude package by organization in sbt

In order to exclude some dependencies in sbt project, we can use exclude or excludeAll method in build.sbt file.

libraryDependencies ++= Seq(
	"org.scalatest" % "scalatest_2.11" % "2.2.0" exclude("org.slf4j", "slf4j-jdk14")
)

While we can pass direct organization and name of package to be exclude to exclude method, excludeAll can receive some pattern or rule to be excluded. For example, if you want to exclude all package under org.slf4j organization, you can create such rule.

val excludeSlf4jBinding = ExclusionRule(organization = "org.slf4j")

libraryDependencies ++= Seq(
	"org.scalatest" % "scalatest_2.11" % "2.2.0" excludeAll(excludeSlf4jBinding)
)

This is pretty simple way to exclude multiple transitive dependencies. Of course you can pass muitple rule to excludeAll method.

libraryDependencies ++= Seq(
	"org.scalatest" % "scalatest_2.11" % "2.2.0" excludeAll(
		ExclusionRule(organization = ...),
		ExclusionRule(organization = ...),
		ExclusionRule(organization = ...)
	)
)

Please see sbt reference manual in more detail.