The many faces of build systems
There are many build systems that have evolved over the history of software development. Sometimes, it might feel as if there are more build systems than there are programming languages.
Here is a brief list, just to get a feeling for how many there are:
For Java, there is Maven, Gradle, and Ant
For C and C++, there is Make in many different flavors
For Clojure, a language on the JVM, there is Leiningen and Boot apart from Maven
For JavaScript, there is Grunt
For Scala, there is sbt
For Ruby, we have Rake
Finally, of course, we have shell scripts of all kinds
Depending on the size of your organization and the type of product you are building, you might encounter any number of these tools. To make life even more interesting, it's not uncommon for organizations to invent their own build tools.
As a reaction to the complexity of the many build tools, there is also often the idea of standardizing a particular tool. If you are building complex heterogeneous systems, this...