Apache Maven Project

Allan Kelly : Apache Maven Project

Maven - a Java project management and project comprehension tool

The Apache Maven Project website has all the information you would expect about this very interesting project. In learning about Maven I will record my own findings here, for my own reference and hopefully to be of help to others.

Project Object Model

The POM concept allows Maven to aggregate project components in order to provide a well defined project structure, which in turn aids project comprehension. This enables developers, customers and managers to stay abreast of the project progress and status through a single interface. Given that the primary problem with any sizable project can be the difficulty of drawing conclusions and reporting on the disparate and intangible progres of many project tasks, then this approach promises a simple and extensible solution to a near-universal problem.

Building on Best Practice

A primary attraction of Maven for me, is the fact that it builds upon best-practice pre-requisites which in themselves have been shown to be beneficial to projects. In order for Maven to report on the POM components these have to have well-defined interfaces. In order for this to be in place we have to have mature and consistent component practices. Maven POM components include "Builds, documentation, source metrics, source cross-references and a countless number of reports", some of which are entirely seperate to Maven and some of which are generated by Maven. This means in a nutshell, that you have to be reasonably well organised in order to introduce Maven into your project.

For Maven to be used on a project, that project has to be utilising appropriate tools and practices. Therefore we can aim for Maven to be used on projects routinely, with the implication that those projects will also have to adopt the building blocks for the Maven POM. Thus use of Maven is a health-check for a project above and beyond the specific Maven benfits.
However note that Maven doesn't require the use of any Ant build files so you can try using Maven without affecting the way you traditionally build your project.

Plugins for Integration

Maven has a system of plugins which extend it's ability to interface with project tools, effectively turning those tools into POM components. These include over 80 "Maven hosted" plugins for reports, app servers, distribution packagers, documentation packagers, editor plugins and so on. Other plugins listed on the Maven site include Cactus integration, WebLogic EJBGen and Tomcat integration, and several more hosted on SourceForge and other sites.

The question is, "Is Maven used as the reporting mechanism only for these tools, or is it also used as a console or control-panel?" It appears to be a bit of both. For example, on the SourceForge Maven Plugins Project Information Page - "All of this content is automatically generated by Maven on behalf of the project."

One striking aspect of these plugins is that each is a project in it's own right, and all are managed using Maven. Therefore we can study several working examples of Maven in use, whilst learning about both Maven and the plugins in the process. Handy.

How big is this?

There is extensive activity around the Maven project. The JIRA server at codehaus.org lists about 90 Maven projects.

Maven in use

Maven is a command-line tool. The output from running Maven is usually in publishable form - whether a set of Web pages, a source code package for deployment, and obviously command-lines are ripe for wrapping in GUIs. So, often operating Maven actually means operating a GUI which in turn runs a command-line for you. The Maven Getting Started pages appear to be very good.

The examples cited in the Getting Started pages are from the Jakarta Turbine projects.

   
Last Updated
Fri Oct 17 23:53:36 2008