Shifting from Ant to Maven

Maven is entirely a different creature from Ant. Ant is simply a toolbox
whereas Maven is about the application of patterns in order to achieve an
infrastructure which displays the characteristics of visibility, reusability,
maintainability, and comprehensibility. It is wrong to consider Maven as a build
tool and just a replacement for
Ant.
Ant Vs Maven
There is nothing that Maven does that Ant cannot do. Ant gives
the ultimate power and flexibility in build and deployment to the developer. But
Maven adds a layer of abstraction above Ant (and uses
Jelly). Maven can be used to build any Java application. Today JEE build and
deployment has become much standardized. Every enterprise
has some variations, but in general it is all the same: deploying EARs, WARs,
and EJB-JARs. Maven captures this intelligence and lets you achieve the build
and deployment in about 5-6 lines of Maven script compared to dozens of lines in
an Ant build script.
Ant lets you do any variations you want, but requires a lot of
scripting. Maven on the other hand mandates certain directories and file names,
but it provides plugins to make life easier. The restriction imposed by Maven is
that only one artifact is generated per project (A project in Maven terminology
is a folder with a project.xml file in it). A Maven project can have sub
projects. Each sub project can build its own artifact. The topmost project can
aggregate the artifacts into a larger one. This is synonymous to jars and wars
put together to form an EAR. Maven also provides inheritance in projects.
Maven : Stealing the show
Maven simplifies build enormously by imposing certain fixed file names and
acceptable restrictions like one artifact per project. Artifacts are treated as
files on your computer by the build script. Maven hides the fact that everything
is a file and forces you to think and script to create a deployable artifact
such as an EAR. Artifact has a dependency on a particular version of a third party
library residing in a shared remote (or local) enterprise repository, and then
publish your library into the repository as well for others to use. Hence there
are no more
classpath issues. No more mismatch in libraries. It also gives the power to
embed even the Ant scripts within Maven scripts if absolutely essential.

|