Developer(s) | Apache Software Foundation |
---|---|
Final release | 1.5.8 / July 14, 2019 [1] |
Repository | Buildr Repository |
Written in | Ruby |
Operating system | Cross-platform |
Type | Build tool |
License | Apache License 2.0 |
Website | buildr |
Buildr was an open-source build system mainly intended to build Java applications. It gave the developer a full-blown scripting language (Ruby) while writing their build scripts, which are usually missing in XML-based building environments such as Apache Ant or Apache Maven. The Apache Buildr project has been retired in July 2022.
Buildr is based on Ruby's build system Rake, and uses Ruby as a scripting language. It uses several project automation idioms from Maven like automated artifact management (Buildr is out-of-box compatible with Maven's repositories). As opposed to the more imperative style of build systems like Ant, Buildr takes a more declarative approach in describing the project automation logic (similarly to Maven).
Though Buildr's general philosophy is similar to Maven, it uses Ruby's scripting possibilities to provide a more flexible and customizable programming model.[ citation needed ] The user writes a Ruby build script, declaring a project, its sub-projects, artifacts, dependencies, packaging rules, etc. Based on these declarations, a list of standard targets are provided to compile or package the project, upload a prepared package to a remote repository, clean up the build results, run tests and so on. Hooks are provided to execute custom Ruby code before or after the standard targets, allowing the user to comfortably override any defaults and further specify the behavior of the standard targets. New, completely user-written targets can be added.
While being mainly designed for Java, Buildr also knows how to invoke compilers for Groovy or Scala. It is also easily extendible with any custom tasks to invoke any third compiler, making it a universal, general-purpose build system. As compared with writing custom plug-ins for Ant, Ruby's flexibility and rich library make it easier and quicker to extend Buildr in any desired way.
Buildr also comes with out-of-box support technologies like Cobertura, Emma, JUnit, TestNG, JBehave, JMock. Integration with Ant is also provided.
Apache Ant is a software tool for automating software build processes which originated from the Apache Tomcat project in early 2000 as a replacement for the Make build tool of Unix. It is similar to Make, but is implemented using the Java language and requires the Java platform. Unlike Make, which uses the Makefile format, Ant uses XML to describe the code build process and its dependencies.
Maven is a build automation tool used primarily for Java projects. Maven can also be used to build and manage projects written in C#, Ruby, Scala, and other languages. The Maven project is hosted by the Apache Software Foundation, where it was formerly part of the Jakarta Project.
Rake is a software task management and build automation tool created by Jim Weirich. It allows the user to specify tasks and describe dependencies as well as to group tasks in a namespace. It is similar in to SCons and Make. It's written in the Ruby programming language and the Rakefiles use Ruby syntax. Rake uses Ruby's anonymous function blocks to define various tasks, allowing the use of Ruby syntax. It has a library of common tasks: for example, functions to do common file-manipulation tasks and a library to remove compiled files. Like Make, Rake can also synthesize tasks based on patterns: for example, automatically building a file compilation task based on filename patterns. Rake is now part of the standard library of Ruby from version 1.9 onward.
Build automation is the process of automating the creation of a software build and the associated processes including: compiling computer source code into binary code, packaging binary code, and running automated tests.
TypeScript is a free and open source programming language developed and maintained by Microsoft. It is a strict syntactical superset of JavaScript and adds optional static typing to the language. It is designed for the development of large applications and transpiles to JavaScript. As it is a superset of JavaScript, existing JavaScript programs are also valid TypeScript programs.
Apache Gump is an open source continuous integration system, which aims to build and test all the open source Java projects, every night. Its aim is to make sure that all the projects are compatible, at both the API level and in terms of functionality matching specifications. It is hosted at gump.apache.org
, and runs every night on the official Sun JVM.
A software repository, or repo for short, is a storage location for software packages. Often a table of contents is also stored, along with metadata. A software repository is typically managed by source control or repository managers. Package managers allow automatically installing and updating repositories.
This is a comparison of notable free and open-source configuration management software, suitable for tasks like server configuration, orchestration and infrastructure as code typically performed by a system administrator.
Apache Ivy is a transitive package manager. It is a sub-project of the Apache Ant project, with which Ivy works to resolve project dependencies. An external XML file defines project dependencies and lists the resources necessary to build a project. Ivy then resolves and downloads resources from an artifact repository: either a private repository or one publicly available on the Internet.
A scripting language or script language is a programming language that is used to manipulate, customize, and automate the facilities of an existing system. Scripting languages are usually interpreted at runtime rather than compiled.
Spring Roo is an open-source software tool that uses convention-over-configuration principles to provide rapid application development of Java-based enterprise software. The resulting applications use common Java technologies such as Spring Framework, Java Persistence API, Thymeleaf, Apache Maven and AspectJ. Spring Roo is a member of the Spring portfolio of projects.
sbt is an open-source build tool for Scala and Java projects, similar to Apache's Maven and Gradle.
Jenkins is an open source automation server. It helps automate the parts of software development related to building, testing, and deploying, facilitating continuous integration and continuous delivery. It is a server-based system that runs in servlet containers such as Apache Tomcat. It supports version control tools, including AccuRev, CVS, Subversion, Git, Mercurial, Perforce, ClearCase and RTC, and can execute Apache Ant, Apache Maven and sbt based projects as well as arbitrary shell scripts and Windows batch commands.
Gradle is a build automation tool for multi-language software development. It controls the development process in the tasks of compilation and packaging to testing, deployment, and publishing. Supported languages include Java, C/C++, and JavaScript. It also collects statistical data about the usage of software libraries around the globe.
Bazel is a free software tool for the automation of building and testing software. The company Google uses the build tool Blaze internally and released an open-sourced port of the Blaze tool as Bazel, named as an anagram of Blaze. Bazel was first released in March 2015 and achieved beta status by September 2015.
Grunt is a JavaScript task runner, a tool used to automatically perform frequent tasks such as minification, compilation, unit testing, and linting. It uses a command-line interface to run custom tasks defined in a file. Grunt was created by Ben Alman and is written in Node.js. It is distributed via npm. As of October 2022, there were more than 6,000 plugins available in the Grunt ecosystem.