Your build files probably need some TLC. Sorry. It’s true. If you’re lucky enough to work on a project with clean code (and let’s face it, most codebases aren’t too pretty), then you’re even luckier to have a nice clean build. Wait! Don’t go getting upset, I can help you. I’ll be introducing some build [...]
Note: I’m not going to even pretend to be unbiased about this one. I used to work for these people. I was involved in hiring Chris, and I was involved in some early discussions about previous incarnations of this product. Chris Read presented Cruise, from ThoughtWorks Studios. Loads of people think that this product is [...]
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 [...]
(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” [...]
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 [...]
(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 sit through [...]
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 declare it. [...]
(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 $1 [...]
Holy dependencies, Batman! Make this man do the build on your project … Link
. 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 build has a clean target and you didn’t change any of files in your project, what should happen? [...]