Maven for Grouper

Advantages

Disadvantages

Maven - an overview

Maven is a java project lifecycle management tool .. nuff said?

It includes build functionality like make/gmake

It includes dependency definitions:

It includes dependency downloads from repositories:

It can do more that just build:

It is platform neutral:

It promotes best practice:

What it offers Grouper:

Comparison with Ant

Ant is driven by a build.xml file which contains step-by-step instructions as to what to do for each build target

Maven is declarative - you tell it what you want to happen and it tries to work out how to do it. If you've followed convention then this will be easy, if not then it will need hints in the form of configuration (e.g. if your source code is in a different folder name to that defined by convention)

Ant is task-based. Each task, and the steps required to achieve it, are defined as a build target

Maven is lifecycle based. Targets are defined by convention, and fit into an overall lifecycle which will be executed in a series of sequential phases

Ant doesn't have the concept of a sub-projects and dependency management across them (meaning that developers resort to defining this in the IDEs)

Maven does, and it works within IDEs and outside them. With Maven you can create parent and sub-projects, manage common dependencies and inter-dependencies. Maven will work out what to do. You can define dependencies in detail in the parent, and refer to these in the sub-projects.

Ant is easier to use if you want to do things exactly your way

Maven is hard to use if you consistently work against convention. Maven can, however, invoke Ant tasks as part of a lifecycle