Avoid use of the "exec" task if possible as this reduces portability.
This is bad as it assumes that the 'tar' utility is installed on the current path:
    <exec executable="tar" dir="${java.tmp.dir}/libraries">
        <arg line="-xzf ${build_dir}/${libraries_tar}"/>
    </exec>
This is good:
    <untar src="${build_dir}/${libraries_tar}" compression="gzip"
        dest="${java.tmp.dir}/libraries"/>