madbean

Ant's cool morale booster: splash task

14 Aug 2003

Spotted the use of the <splash> task in the Hibernate build.xml today (via BPH). So of course I had to add it to Clover's build file. You can see the results in the following screenshot. The <splash> task shows an image and a progress bar while the build is executing (the image can even be an animated .gif).

This is cool and fun, but "cool" is not the only reason why I added it to a production build file. In a previous life, I was working on a huge GUI client in Java (in pre-1.0 Swing!). We would release to system test quite often (twice a month?), and for each release we would come up with a humorous and on-topic splash screen for the application. It was a good release valve, and was good for morale.

I'm sure that my co-workers will now replace the build splash image from time to time. You'll do a cvs -q update -dP and then an ant build and all of a sudden some humorous picture will pop up. Nothing like a good chuckle between coders.

To put this into your own build, you will need something like the following. But things to note about this Ant snipet:

  • We use an "-init" target that most "core" targets depend on, but you'll get the idea.
  • We prefix any target with "-" if that target shouldn't really be called from the command line (this idiom is documented in the Ant manual)
  • When doing a "production" build using the "prod.build" target, I turn the splash screen off.
    <target name="-splash" unless="nosplash">
        <property name="splash.dir" location="."/>
        <splash imageurl="file:${splash.dir}/fun/buildsplash.gif" />
    </target>
    
    <target name="-nosplash">
        <property name="nosplash" value="foo"/>
    </target>

    <target name="-init" depends="-splash">
        <tstamp>
            <format property="build.date" pattern="MMMM dd yyyy"/>
        </tstamp>

        ...
        
    </target>

    <target name="prod.build" depends="-nosplash, -init, ..."/>
    

The <splash> task should be used to maximum effect in combination with the <sound> task.

  • Home
  • Blog