Introduction
Except for simple projects, most real-life projects have more than one module. Each of them can be developed independently. Some modules might depend on others. A project that uses these modules would want to ensure that it builds successfully with the appropriate versions of all the modules.
As we look at multiple modules, each module may use a number of dependencies. To avoid dependency hell, it is important that the versions of dependencies used by each module are managed well. There is also an opportunity to optimize on the dependencies and plugins to reduce the repetition of build scripts.