views:

1310

answers:

6

I ask out of ignorance. It's been over two years since I heard James Duncan Davidson say that Ant needed a successor, something more like a scripting language. It seemed that Maven 1/Jelly tried to do that, and Maven 2 has tried again in its way ("or the highway"), but without overwhelming success. Ant seems still to be the default and I continue to use it effectively, but am still frustrated by aspects of it that have to do with it being XML-based.

I don't mean to discuss Ant vs. Maven, but to ask, is there a successor or alternative that I am unaware of?

Edit: I'm being prompted to pick a best answer, and I would like to pick both "VonC" for mentioning Ivy and "dfa" for pointing out the DSLs. There doesn't seem to be an SO way to pick two "correct" answers, so I've upvoted both.

Thank you for the great answers. I hope they will evolve over time.

A: 

Here's some build automation software. Most of it's built around Ant and Maven, but there's rake in there and Capistrano...

http://en.wikipedia.org/wiki/List_of_build_automation_software

Maven was not trying to be a scripting language. Quite the opposite, it was aiming to be a declarative build system. Basically, it is a structure to describe your project, and a builder could use that info to do what it needed to do.

altCognito
+7  A: 

As an alternative, you can find Ivy, more focused on the dependency management aspect, whereas Maven2 is a software project management and comprehension tool, much more general.

See this comparison between Ivy and Maven.

Plus, Maven2 is much more centered around the notion of "convention over parametrization", whereas Ivy is all about module configuration, which can have its advantages.
Of course, the drawback is that you need to make a lot more configuration to emulate some Maven2 pre-configured features.
Again, those are actually two different tools, but they can complement each others on certain aspects.


dfa reminds us that you can see Maven as "configuration by exception", combined with naming convention to manage really complex builds with minimal verbosity.
I find the configuration part quite difficult, which is why I prefer Ivy (made to be configured), but that does not diminish Maven and its powerful features.

VonC
I prefer "configuration by exception" btw +1 for naming it
dfa
+1  A: 

I read somewhere (can't remember where, and Google can't either – which is a little suspicious and could mean that I just made that up …) that James Duncan Davidson himself replaced Ant with Rake for all his Java work.

I mean, this sort of scenario is pretty much what scripting languages are born for!

Jörg W Mittag
+1  A: 

IMHO There won't be a successor soon. Some people may have their reasons for don't liking Maven but it does its job well. For old projects using just Ant there's Ivy which can handle the dependencies (the major advantage of Maven over Ant) and does its jobs well.

"If is not broken, don't fix it"

I haven't heard of any project which couldn't be built using Maven, Ant or Maven+Ant. Maybe somebody else has...

victor hugo
Any comments about the downvote?
victor hugo
+10  A: 

there few compelling projects:

there is the general idea that ant tasks should be first class citizens in order to don't waste the investment. However I'm still using maven and even ant for projects since I don't like to add yet another dependency to my projects (i.e. the build tool).

dfa
+1  A: 

Ivy and Rake are two alternatives (Ivy if you want to stay in the java realm, rake if Ruby is good for you).

Ant now supports scripting tasks, so generally if there are some things that ant can't quite do, a little script to bridge the gap is very close at hand.

Yishai