Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Buildr vs Gradle, pros and cons? [closed]

I have tried using, both and I'd definitely recommend Gradle. While both of them have pretty much the same expressiveness, I found Gradle to be much more stable (since version 1.0), less effort to install, and better documented. Although Buildr is undoubtedly a great effort, at the moment Gradle is much more professionally made.

The only problem I faced with Gradle is lack of native support for reusing ivy.xml (and ivysettings.xml), despite the fact that Gradle actually uses Ivy as its dependency engine. This feature has been promised for sometime in the future soon. Buildr, on the other hand has a ready-to-use plugin for that (it's not very configurable though).

If you need to migrate from Maven, I'd do some investigation on both tools and their support for the features you need. For new projects I'd recommend Gradle.

Neither have good support for Eclipse, but Gradle have a work-in-progress Eclipse plugin that works very much like the Ant plugin. Also, Gradle's generation of Eclipse settings files is highly customizable, so that's another way to integrate it with Eclipse.


I looked at both gradle and buildr and went for buildr in the end because of one huge disadvantage with gradle: start-up time of the build system. buildr is much snappier and gave me much faster incremental builds. Performance is something I found almost unbearable with gradle. Just consider how many times a build system is kicked off and add up the constant overhead.

BTW I found the build server with both build systems (buildr and gradle) to be not very useful and error prone (that is: I spent more time with troubleshooting than it actually sped up things).


See if this helps (probably outdated): http://www.tikalk.com/alm/blog/buildr-vs-gradle

If compared to BuildR, I'd recommend Gradle: 1. Groovy is much more "native" to the JVM ecosystem than Ruby. Even if you use JRuby, you'd still need to install a lot of gems 2. BuildR's development is crawling. They have not added new features in a long time

Having said that, I'd question using either one of these: With the power to script any task comes the risk that the build will have a lot of logic that people need to learn before being able to maintain it. Since this is not the main logic of the product, you have the risk of people that do not want to maintain the build or worse, doing it in copy&paste way that is not right (e.g., performance wise). With Maven, there's no logic in the pom. Also, using Gradle/BuildR means that to build the product, one needs to install Gradle/BuildR. Maven is much more standard here.