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.