example/app/platforms/android/cordova/lib/build.js
function(opts) {
            // Without our custom_rules.xml, we need to clean before building.
            var ret = Q();
            if (!hasCustomRules()) {
                // clean will call check_ant() for us.
                ret = this.clean(opts);
            }

            var args = this.getArgs(opts.buildType == 'debug' ? 'debug' : 'release', opts);
            return check_reqs.check_ant()
            .then(function() {
                console.log('Executing: ant ' + args.join(' '));
                return spawn('ant', args);
            });
        }
function(opts) {
            // Without our custom_rules.xml, we need to clean before building.
            var ret = Q();
            if (!hasCustomRules()) {
                // clean will call check_ant() for us.
                ret = this.clean(opts);
            }

            var args = this.getArgs(opts.buildType == 'debug' ? 'debug' : 'release', opts);
            return check_reqs.check_ant()
            .then(function() {
                console.log('Executing: ant ' + args.join(' '));
                return spawn('ant', args);
            });
        }
/*
Builds the project with ant.
Returns a promise.