From the category archives:

Build

The Build Rosetta Stone

November 19, 2008
Thumbnail image for The Build Rosetta Stone

Update: I had some nice feedback from @jtf @nasrat and @cread, so I have pushed the source files to a git repository.
What’s the equivalent command to [some command in your usual build tool] in [some build tool that you're using now]? I found myself asking that question too often earlier this year, so I [...]

Read the full article →

All build tools began with Make

August 28, 2008

(image taken from slashcrisis’ photostream)

Today I’m just going to share a pet hate: poor target names in build files. Yes, that’s scratching the surface: there’s plenty of other things to get wrong in your build. But today’s gripe is target names. Here’s an anonymised example from a real project:

<?xml version=”1.0″ ?><project name=”project” default=”tests” basedir=”..”>

<target [...]

Read the full article →

Oh lord, It’s hard to parse build files

August 27, 2008

Nat Pryce left a comment on my post A real BuildRefactoring, in the wild:

IntelliJ can do some simple refactorings of Ant scripts: extractproperty, rename target, rename property, etc.
But refactoring of Ant and Nant is very difficult because they have noconsistent syntax or semantics. They are just quick hacks that havegrown kludge by kludge into inconsistent [...]

Read the full article →

Five Software Build Patterns

August 26, 2008

(image taken from Laineys Photostream)

We live in a world of patterns. Some very clever people have been identifying and naming patterns in software for a long time now. In build and deployment, we’re just beginning. Here’s five:

Aslak Hellesøy kicks things off with Immediate Test Failure Notification. If you’ve ever had to [...]

Read the full article →

Macrodefs come to NAnt

August 17, 2008

The single finest new feature of Ant 1.6 is the macrodef type. It allows you to take loads of horrid lines of XML, antcall tasks, and allowed you to collapse them all down into a single element. If you’re using the Eclipse Ant editor, you can even complete on the macrodef after you [...]

Read the full article →

Ant Best Practices: Avoid platform specific wrapper scripts

August 5, 2008

(image taken from SideLong’s photostream)
Welcome to the final Ant Best Practices post. The last topic of the series is wrapper scripts. Most projects end up having one or more of these. The very first Java project that I did had about a dozen of them. They generally look like this:
#!/bin/sh/usr/bin/ant -f myGreatProject.xml [...]

Read the full article →

Build tool philosophy

August 1, 2008

Holy dependencies, Batman! Make this man do the build on your project …
Link

Read the full article →

Ant Best Practices: The Clean Test

July 23, 2008

(image taken from pingnews.com’s photostream)
This is the penultimate article in the Ant Best Practices series. Last time, we discussed the ZipFileSet. Today’s article is much more important – it’s a subject very close to my heart: only dong necessary work. If you don’t execute the clean target, (do tell me your [...]

Read the full article →

Should every target have a secret?

July 16, 2008

(image taken from electricinca’s photostream)

There’s a question that I wanted to ask you, dear reader. Consider the following code snippet:

<project name=”my_great_web_app”>
<!– snip –>
<target name=”backend-zip-static”>
<zip zipfile=”${build}/backend-static.zip”>
<fileset dir=”${backend.static.dir}”/> </zip>
</target>
</project>

Some of my erstwhile ThoughtWorks colleagues used to use the motto “Every class should have a secret”. Recently I discovered that this evolved from work on Information Hiding [...]

Read the full article →

some Phing refactorings

July 15, 2008

Raphael Stolt, a PHP developer and blogger has written an article called “Six valuable Phing build file refactorings”. He’s taken the refactorings from my ThoughtWorks Anthology article and translated to Phing, the PHP build tool (which is based on Ant). Sweet!
Link

Read the full article →