Chapter I: Introduction
“The evolution from Make, to Ant, and then to Maven has done precious little to advance the state of Java build tools. Developers are still stuck with poorly thought-out tools that force us to violate DRY and write XML tag soup. Your team may be better served using a less popular alternative.”
- Jess Johnson in October 2010, http://grokcode.com/538/
Oooh, more on Java Build Tools. Hooray :-/
Believe it or not, Java developers don’t consider build tools to be the most interesting topic out there. They are generally not considered the most exciting segment of any developer’s overall utility belt.
After all, the majority of the dev world still chooses between just two build tools, Maven and Ant, the latter of the two having been created nearly a generation ago. At best, programmers would prefer their build tool remain invisible and stable; at worst, we hear complaints of downloading enormous libraries, scripts failing for no reason due to some invisible rule running in the background, and general annoyances.
However, build tools should still be able to rock, and it’s in the spirit of “Build Tools [Can] Rock!” that RebelLabs has set out to finalize our journey into the realm of Java’s three most popular build tools–Maven, Gradle and Ant (along with Ivy for managing dependencies). After all, if anyone was going to try to put it a little “sexy” back into Ant, it would be us ;-)
This all started in December 2013, when we published Java Build Tools Part 1. It would help to think of Parts 1 and 2 as a single publication, broken into two sections due to length and time restrictions. In Part 1, we showed developers how to get started with all of the tools mentioned, we reviewed some tips and pointers on creating the build script, interacting with communities and how to use/create plugins for your overall development environment.
In Part 2, we go deeper and get out the proverbial red pen, taking each build tool and ranking them in six categories, then applying those scores to four common user profiles (i.e. use cases) in order to figure out which build tool makes the most sense for you. But now, let’s review where the general Java development industry stands in terms of current and historical build tool usage.
What we’ve been using over time
Here is a timeline going from 1977 to 2013, showing how things have emerged over time. You’ll notice that MAKE and SBT are mentioned, but aren’t appearing in the report due to lack of higher representation in the world. But they are worth looking into as well, just FYI.
Considering the timeline here, it’s probably better to look at Build Tools in use since 2010, and we’ve seen the following trends over the last few years. Here are the self-reported statistics from three years worth of developer data.
From what we can see, Maven is increasing at a steady rate, Ant is losing market share and Gradle is increasing at a more explosive pace. It would not be incorrect to suggest that people are migrating from Ant to Gradle, but it’s equally likely that Ant users go first to Maven (which is also XML-based) and then proceed to Gradle.
In any case, which tool developers use is not always up to them. However, by ranking these tools against six categories for four different user profiles, we hope to shed some light on matters. In Chapter II, here is what we test and compare:
- How easy is the initial learning curve?
- How fast are different builds with each tool?
- How complex is it to create and maintain the build script?
- How many plugins exist and how simple is it to customize your own plugins?
- How good is the community and documentation for each tool?
- How well does each tool integrate with developer tools? (IDE, App Server, CI server)
From there, we take those scores and apply them across four user profiles–from hobbyist developer and OSS project creator to a developer inside of medium-sized organization and developer #12645 in a global megapower.
Download the PDF