During the course of software development, such problems can surface, that the efficient solution is to modify or optimize the compilation steps in order to produce the result. For either small or big projects, in such cases the developer requires a build system which allows easy configuration of the build pipeline, while providing the same features as the state of the art build systems on the market. This thesis presents the structure, development and usage of such modularly extensible build system.
Apart from the current trends, the main attribute of the system is that the build steps can be specified sequentially. Due to this nature, it is easier to overview the build process of the developed software, because every part of the compilation has a definite run order, unlike the dependency based description, which could force the developer into a fixed project structure, or the build steps could be hard to trace on the first look.
With the promise of extensibility, the developer has the possibility of creating complicated build steps, which can complete the specified tasks during compilation. In order for this to work the system operates in a loosely attached way, where it is possible to load different modules dynamically. To achieve this, the build system uses the features of the Java language and its virtual machine to support loading executable code during runtime.
With the support of the developers in mind, the system offers a plugin for the Eclipse integrated development environment, which support custom script based build execution. After the compilation, the plugin processes available information, and modifies the Eclipse project structure, in order to make available such features to the developers, that makes software development easier. (E.g. Content Assist).
This thesis compares the developed build system with the ones currently available solutions on the market, and outlines the emerging implementation questions. It provides details of the structure for the system, describes the methods of creating modular extensions, and provides examples for the system usage. The presented measurements will prove the performance and scalability of the working solution.