Maven and Dependency Injection
When Maven kicked off in 2002, it strongly looked for an IoC or a DI framework. As we discussed before, Maven provides a build framework while the actual work is done by the components and plugins developed on top of it. That's part of the Maven's design philosophy, and this raised the need to have some kind of a component framework to bring in plugins and other extensions.
By 2002, Spring was not that popular and Apache Avalon was the only IoC framework out there. However, the initial set of Maven committers, who also had a strong influence on Plexus, decided to use it as the IoC container for Maven.
Plexus did exactly what Maven wanted to have. However, it uses its own custom DI mechanism. In November 2009, the Java community standardized DI via JSR 330 (https://www.jcp.org/en/jsr/detail?id=330). Maven 3.0 onwards started supporting JSR 330 via Google Guice (https://github.com/google/guice). Then again, the components that were written using Plexus APIs could...