Mar
11
2005

Ant vs Maven and dependency management

It seems there is a lot going on about dependency management and building (Java) software lately. Is it just me or is this something we need to resolve at a different level. Certainly Ivy is pretty cool, as Colin mentioned and after I had a look at it I certainly found it better than Maven’s dependency management features. The fact that it’s capable of resolving transitive dependencies is something we’ve been looking for for ages already.

But then again, is a good dependency management tool and a decent amount of Ant scripts going to do the job. I suspect not. My question is: we’ve been doing this stuff for sooo long now already (when did Ant first arrive, was it 2000, I can’t even remember) why has NOBODY ever figured out how things should really work, from a developer’s point of view as well as from a release management point of view and a customer’s point of view. Arjen told me (after he visited the .NET developer days in Holland last week) the new Visual Studio Enterprise Edition (Arjen, maybe you can elaborate here??) includes a continuous integration tool, the ability to configure workflow before a commit happens (no comitting of code before all tests are run) and much more stuff like.

From a developer’s point of view I’d like the following:

  1. Being able to import my project in any IDE (Eclipse or IDEA that is) without any custom stuff (so please, no maven idea)
  2. Develop code and run tests in my IDE
  3. Create and deploy one or more artifacts to one or more environments
  4. Run integration tests in my IDEA (ooops slip of the …)

From a release management perspective I’d like to see the following:

  1. Have a continuous build that
    • reports on any errors, glitches and out-of-the-ordinary situations
    • generates artifacts and deploys them to some environment
    • runs all tests
    • creates a release of the software specific to the environment I’m using
    • sends an email to all involved in this successful or failing build
  2. Have the ability to download a successful build and deploy it on any environment (staging, production)
  3. Being able to identify a successful build as being the final result of an iteration (a version)
  4. Being able to roll back to any previous release

Well, is that all? That shouldn’t be too hard should it :) ? Well, at the moment Maven doesn’t take the right approach (as far as I’m concerned) and Ant is too fine-grained to make things usable at a higher level. All it leaves us is the option to have a common build library with all kinds of Ant scripts that we can import from a pre-defined location (as of 1.6). No overriding, no extending, no etcetera.

A couple of interesting other articles / posts:

Written by Alef in: Java-related |

7 Comments »

RSS feed for comments on this post. TrackBack URL


Leave a Reply

Powered by WordPress | Theme: Aeros 2.0 by TheBuckmaker.com