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 tasksfor 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 abovethe 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 Technology Preview mean?

While Maven 2.0 is quite useful as is, it does not yet have all of the features of it's predecessor, and has some limitations that may impede it's use on a day-to-day basis in your projects.

This release is being made available so that people who are interested in the future of Maven can take a sneak peek, while those interested in becoming early adopters 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 4-5 week release cycle, meaning that there will be at least one release per month.

The first releases such as the technology preview will be designated "alpha" releases, indicating that they are not yet feature complete and there are outstanding bugs. Following that, "beta" releases will be 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 alpha-3 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.orgon #maven. This is available both over IRCand HTTPfor those behind firewalls (enter #maven2in the Channelbox).

Please remember that it is a preview release, so please be patient with features that are not yet implemented, and be prepared to do some research and to help out yourself wherever possible.