Main Page - Blog - Books - Links - Resources - About - Contact Me
This page is based on the build scripting tools appendix (Appendix C) in Ship It!.
Scripting languages take a lot of the work out of building your product. With features specific to product compilation and assembly, these languages let you capture every step of your build process so that it’s repeatable and easy to automate.
make-- make comes on all modern Unix and Unix-like systems; you can get a free version for Windows at this URL. make is the grandaddy of all the build scripts, and has been around for decades. Tools like make move you forward a little, but still force you to write your own code for many common functions. They do begin to introduce the idea of a cross platform script.
Automake-- Automake is a Perl utility that helps you create make files.
Ant-- Ant is the standard build scripting language for Java work. With tons of built-in functionality, it’s flexible enough to script much more than just Java.
NAnt-- NAnt is the .Net version of Ant.
Groovy-- While definitely a general scripting language, Groovy also lets you access all the functionality of Ant from within your Java code. Its goal is to give you all the convenience of Ant targets with the power of a real programming language as well. Groovy is still maturing, so caveat emptor.
Rake-- Rake is a build tool for Ruby with similar capabilities to make, but it uses pure Ruby for its scripting language. It also support such things as rules patterns and tasks with prerequisites.
Ruby-- Ruby is a scripted language that’s getting more popular every day. It has many object-oriented features built in and can process text files like Perl. It’s easy to use, is very clean, and has an active user community.
Python-- Python is another interpreted language with many object-oriented features. People either love or hate Python’s format, but it’s hard to ignore the fervor that hard-core fans have for it.
Perl-- No discussion of scripting languages would be complete without mentioning Perl. Perl has been around for years, exists on every major platform, and has been used to do nearly everything a computer can do. It’s got an incredibly rich set of functionality for handling text files, and the web archives1 have Perl code available to do anything you’ll ever need done. The syntax is obscure, but the utility is undeniable.
Maven2-- The next version of Maven, rewritten from the ground up. The build paradigm is simpler than in Maven 1, and performance has been greatly enhanced.
The tool’s language. make and its kind are pretty arcane, but most late-model scripts are based on XML.
Readable-Can anyone in your shop read the script and understand it?
Available on your platform-Is it ubiquitous?
Scalable-Is it fast enough? Can it handle the load needed in your shop? There’s a big difference in being able to handle one or two projects and handling fifty.
Extensible- How hard is it going to be for you to add those extra functions you need?
Flexible Can you use the tool the way you want to, or will the tool force you to change the way you work?
Matches your programming style-Just because it works doesn’t mean it’s the best fit for you!
Easily accomplishes your build tasks-Can you learn it in thirty minutes, or will it take two weeks?