What is Maven?

Maven is a tool that is used to process your project information and sources, not only to build it into binary form but also to generate information to help you get a single view of all aspects of your project, and in some cases related projects.

For a full description, see the main What is Maven? document.

Maven has also grown into a project that is building other products to help in the software development lifecycle. More information about the Maven Project .

What are the features of Maven 2.0?

Maven 2.0 has the following major features:

  • Simple project setup that follows best practices - get a new project or module started in seconds
  • Consistent usage across all projects means no ramp up time for new developers coming onto a project
  • Superior dependency management including automatic updating, dependency closures (also known as transitive dependencies)
  • Able to easily work with multiple projects at a time
  • A large and growing repository of libraries and metadata to use out of the box, and arrangements in place with the largest Open Source projects for real-time availability of their latest releases
  • Extensible, with the ability to easily write plugins in Java or other scripting languages
  • Instant access to new features with little or no extra configuration
  • Ant tasks for dependency management and deployment outside of Maven

The following features are available in Maven 1.0 and will be available and much improved in Maven 2.0 through the coming releases:

  • Deployment and release management
  • Comprehensive project information and reporting
  • Website and documentation building tools
Tell me about the goals of Maven 2.0

You've seen above the goals that Maven aims to achieve, however there have also been questions about why Maven 2.0 is rewritten from the successful Maven 1.0. In summary, the main goals of the new Maven 2.0 architecture are:

  • To be simple to use - it should be more obvious and consistent about how things are working
  • Fast - a new architecture and smaller memory footprint make it as fast as possible
  • To be able to implement the features demanded that were not possible under the Maven 1.0 architecture

Unfortunately, to reach these goals - we've had to sacrifice backwards compatibility to do this. Instead of making many small incremental changes that would break compatibility often over time, we decided to build on a new, solid base that can be reliable for the future, and also to maintain the existing Maven 1.x product to ensure that existing users are not left out in the cold.

What does beta release mean?

Maven 2.0 is now in beta testing. We believe it is equally functional to Maven 1.0, however there are still some bugs and usabilities issues including documentation to be resolved.

While some minor features may be added, the key goal is to retain backwards compatibility so this will be limited.

This release is being made available so that people who are interested in using Maven 2 when it is released can test and provide feedback, and those interested can get involved in the development and direction of the project.

For more information on whether this release of Maven 2.0 should be used in your environment, please consult this topic .

How often will Maven 2.0 be released?

We are working to a fortnightly release cycle until the final release.

The first releases such as the technology preview were designated "alpha" releases, indicating that they were not yet feature complete and there were outstanding bugs. Following that, "beta" releases are being made available where introduction of new features will be restricted and the focus on improving usability and stability. Finally, one or more release candidates will be distributed for testing that are genuinely believed to be final, with the expectation that a final release would be available shortly afterwards.

We will continue with the successful technique from Maven 1.0 of making plugins available on a separate release schedule so that new features can be obtained as they are ready and tested.

For more information, consult the Road Map .

Can I get involved?

The Maven project welcomes anyone that wishes to contribute to do so by providing patches to the source code, participating in design discussions, or to help out on the users mailing list by answering questions.

Frequent contributors recognised by existing committers to the project may be asked if they would like to join the project.

For instructions on checking out and building Maven 2.0, see Building Maven 2.0 .

For more information, please see How to Help .

What plugin languages will Maven 2.0 support? What about [insert language here]?

As of the current release, Maven supports pure Java, Beanshell and Marmalade. Java is the preferred language for it's familiarity and speed, while Marmalade is preferred for porting Maven 1.x plugins, and writing plugins based on Ant tasks.

We get asked a lot whether Maven 2.0 will support other languages, in particular Groovy. We will allow the use of Groovy - and virtually any other scripting language if there is demand, or someone can commit a small amount of time to implementing a factory for it.

We would recommend waiting for Groovy to have a 1.0 release so the API (and language!) is stable. What we will not be doing is actively supporting it (in terms of answering questions about how to use it) like we currently do for Jelly in Maven 1.x.

Beanshell is more mature, and we want a language that users will find answers for when they look, and that when they find bugs, it is clearly defined where they actually are.

We may consider emphasising a different language if there are compelling technical reasons for doing so - if you have a suggestion, feel free to contact the development list.

Where do I get help with Maven 2.0?

Help for both Maven 1.0 and Maven 2.0 can be obtained by subscribing and posting to the Maven Users List . If you are posting about Maven 2.0, please make that clear in your email.

You can also join us on IRC at irc.codehaus.org on #maven . This is available both over IRC and HTTP for those behind firewalls (enter #maven in the Channel box).