specs2 is not a sbt a Scala plugin for writing executable software specifications .
There are two levels of sbt projects. Your own projects (call them "applications") and the very definition of an assembly project (call it "assembly").
library dependencies
When applications use other libraries during compilation or testing, they are called library dependencies (or "deps"). These depots are declared in build.sbt (or *.sbt or project/*.scala ) as follows:
libraryDependencies += "org.specs2" %% "specs2" % "2.2" % "test"
Speaking %% , artifacts published using sbt automatically add the postfix Scala binary version, such as _2.10 on Maven. This is because (unlike Java), not all Scala releases are binary compatible with each other. Scala 2.9.1 and 2.9.2 are incompatible, therefore both of them have different postfix _2.9.1 and _2.9.2 , but Scala 2.10.x are all compatible between the series, therefore _2.10 assigned to _2.10 .
Unfortunately, however, different versions of Specs2 are required for Scala versions, you may have to do something more similar:
libraryDependencies <+= scalaVersion({ case "2.9.2" => "org.specs2" %% "specs2" % "1.12.3" % "test" case x if x startsWith "2.10" => "org.specs2" %% "specs2" % "2.2" % "test" })
See the getting started guide for more information.
sbt plugins
There are special types of libraries, which may depend on the possibility of expansion, and they are sbt plugins. They are declared in project/plugins.sbt (or project/*.sbt ) as follows:
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.2.5")
Since sbt plugins depend on the sbt version and the Scala version that the assembly uses, both of these data are somehow encoded into the published artifact path. On Ivy, they are expressed as folder names, but on Maven they are expressed as postfix: