This is bit of a roughcut and not meant to be merged right away. It's more to solicit feedback and polish more. But let's see if we can converge on this long outstanding issue. I am suddenly finding this important, so thought of scratching the itch :)
The goal is to support the basic case of excluding a library from the dependency tree given it's organization and name, no more. This, I imagine, meets most use-cases barring a few esoteric ones (for all such things there is full blown ivyXML setting anyway).
So these should work now:
val dhttp = "net.databinder" %% "dispatch-http" % "0.7.8" excluding("commons-logging" % "commons-logging")
val dhttp = "net.databinder" %% "dispatch-http" % "0.7.8" excluding("commons-logging" % "commons-logging", "org.apache.httpcomponents" % "httpclient")
However, CacheIvy.moduleIDFormat is broken. It's not apparent because exclusions is the last parameter in ModuleID constructor. But I couldn't figure a nice fix because of the "nine parameters" limitation.
Let me know what you think about it and a suggestion to get around the problem in moduleIDFormat.
IMPORTANT This project has moved to https://github.com/sbt/sbt. This issue still exists to avoid dead links, but GitHub limitations prevent the original issue from being correctly preserved here. Please see sbt/sbt#169 for the full issue and to comment.