Maven 3.x is the Maven version for the people. The Maven team has gone to the ends of the earth to ensure backward compatibility, improve usability, increase performance, allow safe embedding, and pave the way for implement many highly demanded features.
This talk will briefly cover the process and tooling changes that have occured in the Maven project in order to accomplish what we have done with Maven 3.0, as well as discuss the architectural and feature changes.
Some of the process changes include
- setting up a multi-platform Jenkins grid ,
- building out a framework of over 640 integration tests ,
- creating integration tests for all core Maven plugins,
- and systematically seeking out Maven 2.x OSS projects to validate Maven 3.x's compatibility.
We also built out a framework that measures disk I/O, network I/O, memory consumption, and CPU utilization to ensure that performance doesn't degrade.
The architectural changes center around how POMs are constructed, how the lifecycle is executed, how the plugin manager executes, and how artifacts are resolved.
Some features derived from these architectural changes include
- lifecycle extension points,
- plugin extension points,
- our new single point of entry artifact resolution mechanism, Aether .
Some features not done in Maven 3.0.x but in discussion for future releases are
- any-source POMs,
- versionless parent elements,
- a compositional form of Maven POM configuration we call mixins