This Ant task throws a BuildException if a specified Ant property is not defined. I use it like this:

    <target name="generateXlnServerPropertyFile">
        <checkDefinedAntProperty propertyName="classpath.delimiter"/>
        <checkDefinedAntProperty propertyName="velocity.template.directory"/>
        <checkDefinedAntProperty propertyName="xlnserver.property.file"/>
        <generateXlnServerPropertyFile .../>
    </target>
package org.wwre.ant.tasks;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;

/**
 * This class configures the XIS server for WIM use.
 *
 */
public class CheckDefinedAntPropertyTask extends Task{

    private String propertyName = null;

    /**
     * The method executing the task.
     *
     * @throws BuildException If srcdir or classname are null. This exception is also thrown
     * if the variable cannot be found, The java file does not exist,
     */
    public void execute() throws BuildException {

        if (getPropertyName() == null) {
            throw new BuildException("Please set the propertyName attribute.");
        }

        String propertyValue = getProject().getProperty(getPropertyName());

        if (propertyValue == null) {
            throw new BuildException("Please define property[" + getPropertyName() + "].");
        }

    }

    /**
     * @return Returns the propertyName.
     */
    public String getPropertyName() {
        return this.propertyName;
    }

    /**
     * @param _propertyName The propertyName to set.
     */
    public void setPropertyName(String _propertyName) {
        this.propertyName = _propertyName;
    }
}