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.
|