Saturday, October 28, 2006

CruiseControl verses Ant verses Maven2

This week, I took at look at what CruiseControl and Maven2. I have used ant and customized versions of ant in for J2EE builds for many modules source tree as well as projects with one giant nested ant file.

Here is an overview of what the separate items are:

  • Ant – Build script written in XML that is used to compile and run java projects. Ant build files are simple at first, but easily become more complex.
  • Maven 2 – Build system that forces your source code to live in a directory layout. Maven supports all development lifecycle steps such as development, testing, deployment, versioning, and also remote libraries. This is definitely very complex.
  • CruiseControl – Continuous integration tool. It will check out all your source files whenever it detects a change and kickoff another build and test. Pretty simple once you have it running.

This is my recommendation.

  • Use CruiseControl for build automation and setting up the nightly builds.
  • Don’t use CruiseControl if you do not needed automated builds.
  • Use Maven2, if you want to follow the best practices for J2EE development.
  • Don’t use Maven2 if your builds are too customized, or the work required to convert to maven2 would be too involved for your organization.
  • Use Ant if your build is highly customized.
  • Don’t use ant if Maven or Cruisecontrol can take care of the functionality that you need
I know that ant, and cruse control definitely have a place in the build environment at my current work. We’ll see if maven2 has a place.

1 comment:

Slava said...

Tom,

You might want to check our Parabuild for a continuous integration server as well. It works both with Ant and Maven and takes five minutes to install.