Maven is built on Plexus. This lightweight container is used (afaik) for :

  • simple (javadoc) annotation-based programming model
  • lifecycle management
  • dependency injection
  • classloader isolation for plugins (using classworld)

Let's now consider the today responses to the same requirements. Maybe Plexus was a very advanced container when it was created, but it did not become the today 1rst choice technology :

  • Since Java5, annotations are common, and JSR-250 introduces standard annotations that can address some basic lifecycle and IoC requirements. The IoC container ecosystem is dominated by Springframework. Maybe not the best technical one for any reason, but the best documented and most know by developers.
  • Classloader isolation is very well adressed by OSGi, with the advantage of beeing a recognized standard, with many documentation AND business interest.

Considering an opensource tool like maven is built by volunteers developers, it would be a good thing to attract talentuous ones to use up-to-date and well known technologies. Maven beeing based on some near-perfect tools that fiew developers know is not a good think, as we need support from a wide community to improve it.



  • No labels