Maven 3.0 Release Switches to Google's Guice Framework, Adds Aether
Version 3.0 of Maven, a free, open-source Java build tool, was released this week and is now available for download. This release, the first major upgrade since Maven 2.0 was released in October 2005, emphasizes performance and architectural enhancements, rather than features.
Sponsored and licensed by the Apache Software Foundation (ASF), Maven is an open-source framework and repository for building and managing any Java-based project. It started as an effort to simplify the build processes in the Jakarta Turbine project (a servlet based framework that helps Java developers quickly build Web applications). Based on the concept of a project object model (POM), Maven can manage a project's build, reporting, and documentation from a central piece of information. According to Sonatype, Maven's chief commercial sponsors, the project's goal today is to allow developers to comprehend the complete state of a development project in the shortest period of time.
One of the most talked about enhancements in this release is the switch from the Plexus container to Google's Guice framework as its inversion-of-control (IoC) container. Guice is an open source software framework designed to reduce the need for factories and the use of new in Java code. As Google explains it, "Guice embraces Java's type safe nature, especially when it comes to features introduced in Java 5 such as generics and annotations."
This release also adds the Aether embeddable repository API. Developed by Maven's chief commercial sponsor, Sonatype, Aether is designed to serve as a standard library for interacting with Maven repositories.
According to Maven creator and founder of Sonatype Jason Van Zyl, "It's clear that Maven repositories play a critical role within JVM-based development infrastructures, and Aether will provide the necessary interoperability, through a common set of tools and APIs, that's critical for happy users in the ecosystem."
Also in this version, Maven's POM configuration file no longer has to be XML because the tool now includes Polyglot Maven, a framework for adapting DSLs (Domain-Specific Languages) Polyglot Maven this makes it possible to use modern JVM language implementations, such as Groovy, Scala, Clojure and JRuby.
In a blog post announcing the release of Maven 3.0, Van Zyl disclosed that his company will now turn its attention to "Maven's Eclipse-focused cousins," the Maven Shell, Polyglot Maven and Hudson.
Notes on compatibility between Maven 2 and Maven 3 are available online here.