views:

139

answers:

2

Hi,

We are currently working on a project with both actionscript and Java. Up to now, we were using Ant as our main build tool, but the dumb amount of duplication it implies and the lack of flexibility (we are building a pretty large amount of small sub-projects, and copying all of the build files every time is a pain) are pushing us towards a change of tools.

EDIT3: I'm done rewriting all of our builds in Gant, and even though it's not perfect, it downsized our build files massively and made adding new project much more straightforward, so I'd definetely recommand Gant to people not wanting to change their build philosophy and project structure, but just looking for a more convenient tool than ant. I might have a look into graddle and/or Ivy one of those days.

EDIT2 : After trying out Buildr, we ruled it out because it does way more things than what we actually need. I'm now trying Gant which looks like right what we need but the documentation is pretty small. Is it worth it moving all the way to Gradle, or is th project not mature enough yet ?

EDIT : I'll try to clarify our problems with Ant. We have several sub-projects with similar layouts which we have to compile and run tests for. Once that's done, some of them need to be packaged together to produce executables (namely a client, a server, and some stand-alone demos). The work to descripe our standard layout in ant is pretty long, and it's awfully difficult to introduce small variations without rewriting the whole macro. (Say, one of the projects need to grab its visual assets from a different repository).

  • Gant which would allow us to reuse the ant tasks that are already out there both for Flash and Java
  • Gradle for the same reasons even though it looks slightly more complicated
  • Rake which seems to be highly recommended. The downside being the experimental support of action script integration and our lack of knowledge of Ruby
  • Buildr which looks pretty cool, but here again, no knowldege of ruby
  • Scons seems to have less momentum, but Python is a pretty cool scripting language

Maven was considered, but has been eliminated because of the inherent complexity and the apparent error-proneness. We are currently leaning towards Gant. Does any of you have experience using several of these tools ? How do they compare ?

Our needs are pretty basic : Compile and package projects, deploy them to several targets and some scripting capability (to run project-specific performance tests for instance). Of note could also be that we use Hudson to handle continuous integration.

+1  A: 

I know that people in our company who do Java for a living swear by Ivy, but not having any experience with it, I don't have enough facts to back this suggestion up with technical arguments. They did mention lack of duplication as a plus though compared to Ant they used before. Caveat emptor.

DVK
+2  A: 

I'm not sure switching to gant will solve your problems. Gant is just writing build files in groovy instead of xml. I think your issue lays more in the way you're using ant. Hard to say without more details, but phrases like "dumb amount of duplication" and "copying build files around" make me think you could be using ant more efficiently.

If you haven't already, look at your ant tasks, and see if you can refactor them so eliminate that duplication. Also, checkout the -find option to ant if you haven't seen it already. You shouldn't need to be copying build files around.

BTW, Ivy is for dependency management, not building.

Andrew B
To clarify, all our build files lay in the same directory, we are not actually copying them in our projects. However it remains that doing parameterizable tasks in ant is uselessly complicated (in great part because xml is not a very pleasant programming language)Roughly, we'd like to have the ability to build our sub-projects independently then package them together without having to copy the same task ten times in our build file.
Axelle Ziegler