getProject().setProperty("ivy.deps.changed", String.valueOf(report.hasChanged())); ivy.setVariable("ivy.deps.changed", String.valueOf(report.hasChanged()));
    public void execute() throws BuildException {        Ivy ivy = getIvyInstance();        try {            if (_file == null) {                _file = new File(getProject().getBaseDir(), getProperty(ivy, "ivy.dep.file"));            }            _conf = getProperty(_conf, ivy, "ivy.configurations");            _revision = getProperty(_revision, ivy, "ivy.revision");            _type = getProperty(_type, ivy, "ivy.resolve.default.type.filter");            if (_cache == null) {                _cache = ivy.getDefaultCache();            }            String[] confs = splitConfs(_conf);            ResolveReport report = ivy.resolve(                    _file.toURL(),                     _revision,                     confs,                     _cache,                     getPubDate(_pubdate, null),                     doValidate(ivy),                    _useCacheOnly,                    FilterHelper.getArtifactTypeFilter(_type));            if (isHaltonfailure() && report.hasError()) {                throw new BuildException("resolve failed - see output for details");            }            ModuleDescriptor md = report.getModuleDescriptor();            setResolved(md);                        // put resolved infos in ant properties and ivy variables            // putting them in ivy variables is important to be able to change from one resolve call to the other            getProject().setProperty("ivy.organisation", md.getModuleRevisionId().getOrganisation());            ivy.setVariable("ivy.organisation", md.getModuleRevisionId().getOrganisation());            getProject().setProperty("ivy.module", md.getModuleRevisionId().getName());            ivy.setVariable("ivy.module", md.getModuleRevisionId().getName());            getProject().setProperty("ivy.revision", md.getResolvedModuleRevisionId().getRevision());            ivy.setVariable("ivy.revision", md.getResolvedModuleRevisionId().getRevision());            if (_conf.trim().equals("*")) {                getProject().setProperty("ivy.resolved.configurations", mergeConfs(md.getConfigurationsNames()));                ivy.setVariable("ivy.resolved.configurations", mergeConfs(md.getConfigurationsNames()));            } else {                getProject().setProperty("ivy.resolved.configurations", _conf);                ivy.setVariable("ivy.resolved.configurations", _conf);            }                    } catch (MalformedURLException e) {            throw new BuildException("unable to convert given ivy file to url: "+_file, e);        } catch (ParseException e) {            log(e.getMessage(), Project.MSG_ERR);            throw new BuildException("syntax errors in ivy file", e);        } catch (Exception e) {            throw new BuildException("impossible to resolve dependencies: "+e.getMessage(), e);        }    }