Specification dependencies allow the dependency on a particular library that only provides an API, and that should resolve to one or more implementing libraries.

Would need to be able to provide:

We shouldn't limit this to APIs and implementations but also to jars that aggregate others, eg. spring aggregates spring-dao, spring-hibernate,... (usually everything built with the assembly plugin). This is what in linux packages is called provides, so I'd say spring 1.2.5 provides spring-dao 1.2.5, spring-hibernate 1.2.5, ...