James Bowes

Purveyor of Pre-eminent Programmes

Maven: buy the razor, get the blades for free

leave a comment »

Build tools are tricky things. Make and Ant lack key features for
larger projects, like dependency resolution. The GNU autotools add
more power to make, at the cost of extreme complexity.

Project structure (e.g. directory layout) . Do you leave all your
source files in the root directory, or create sub-directories? How do
you divide the files into the directories? All of these combinations
require a more powerful (and therefore more complex) build tool.

The common solution, especially in the auto* world, is just to
copy an existing project, empty the directories, and cut and paste the
build files until the project works. Often, this results in cruft in
the build files, though no-one knows it, because no-one can understand
the auto* syntax.

Maven turns the whole thing
on it’s head. The developer is given far fewer choices when setting up
a project, in fact, some restrictions are imposed; a maven project
must follow a some standards, such as directory layout. With the
burden of choice taken off the developer, the knowledge that would
have come from these choices is already inherent in the system, and so
it does not have to be provided (through verbose config files) to Maven.

With a small config file, Maven can build a project, update the
source from a CVS or SVN repository, download any libraries that the
project depends on, run tests, generate documentation, build a project
website, create eclipse project and classpath files (you can automate
the process, instead of manually following two pages of instructions),
and chart more data than you’ll know what do to with. All of this is
done through plugins, and most plugins themselves require no
configuration beyond maven’s base config file.


Written by jbowes

July 13, 2005 at 6:05 pm

Posted in Uncategorized

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: