Dependency Composition
Third party libraries tend to follow very different versioning patterns. Compositions provide a means of creating a meaningful local version for a collection of third party libraries.
Ultimately a composition is a just a library that has no code, only dependencies.
Compositions are a form of theĀ strangler pattern. For example the following diagram shows how we have encapsulated the spring libraries, as one dependency that is shared by many libraries/applications This is enforceable at build time to ensure class path coherency.
One of the outcomes of a composite is to ensure every application and library is aligned to the same composite version. Adding dependency exclusions because of composite version conflicts is a violation of the pattern.
![](http://docs.practiv.com/images/diagrams/dependency-composition.png)