12 Things to Know About Buildr

Programming Model

Buildr is built on Rake, which means it is based on a task and dependency model;

Main Purpose

Buildr lets you easily define common build tasks and their dependencies using a project structure and standardized tasks such as "compile", "test", "package", etc.

Execution Order

Rake determines the order of execution of tasks at runtime by ensuring that a task's dependencies are executed first (recursively). Runtime dependency resolution means tasks can be created and ordered dynamically. If Rake detects a cyclic dependency while executing the invocation chain, it will let you know.

Goal Oriented

Rake will only execute tasks required to achieve the goal(s) specified on the command-line, or the default task if no goals are specified. If a task does not execute, it's because it's not required as part of the transitive dependencies of the goal(s).

Optimization

Each task is responsible for determining if any work is necessary upon its execution. If the task's output is already available and up-to-date, the task should typically not do any work.

Project dependencies

Projects implicitly depends on their sub-projects, meaning that the compile task of a project depends on the compile tasks of all its children. A project may depend on a sibling, but not on a parent.

Project Tasks

Standard project tasks and their dependencies are:

!image:project-deps.png|width=800!

Concurrency Support

Buildr/Rake support concurrent task execution to shorten build time. Rake's internal data structures are thread-safe with respect to concurrent task execution. However, if data is shared between potentially concurrent tasks, it's the tasks' responsibility to prevent race conditions and data corruption.

Supported Platforms

Buildr runs on Ruby and JRuby, which means it can run on pretty much any modern operating system;

Ecosystem

If Builder doesn't support a feature you need, look for:
1) an existing Buildr plugin,
2) an existing Ant task,
3) an existing Ruby gem library,
4) an existing Java library;
or write your own (smile)

Community

Buildr is a vibrant community of people passionate about their build system and good software in general. Join our mailing lists, let us know if you find bugs, try to fix stuff if you can, exchange your ideas, write documentation, promote Buildr through guerilla means (blog, tweets, meetups, ...) and help us create better software.

License

Buildr is licensed under the liberal Apache Software License v2, which means it's free software, you can get its source code, hack it any way you like, and use it commercially. Refer to the license for actual terms and conditions.

  • No labels