What is a build system?
Put simply, a build system is a set of programs and companion text files that collectively build a software code base. Nowadays, every programming language has its own set of build systems. For instance, in Java, you have Ant, Maven, Gradle, and so on. But what does "building a code base" mean?
Building a code base means producing final products from source files. For example, for a C code base, the final products can be executable files, shared object files, or static libraries, and the goal of a C build system is to produce these products out of the C source files found in the code base. The details of the operations needed for this purpose depend heavily on the programming language or the languages involved in the code base.
Many modern build systems, especially in projects written in a JVM language such as Java or Scala, provide an extra service.
They do dependency management as well. This means that the build system detects the dependencies...