Search in sources :

Example 6 with DefaultExcludeRule

use of org.apache.ivy.core.module.descriptor.DefaultExcludeRule in project ant-ivy by apache.

the class IvyExclude method asRule.

DefaultExcludeRule asRule(IvySettings settings) {
    String matcherName = (matcher == null) ? PatternMatcher.EXACT : matcher;
    String orgPattern = (org == null) ? PatternMatcher.ANY_EXPRESSION : org;
    String modulePattern = (module == null) ? PatternMatcher.ANY_EXPRESSION : module;
    String artifactPattern = (artifact == null) ? PatternMatcher.ANY_EXPRESSION : artifact;
    String typePattern = (type == null) ? PatternMatcher.ANY_EXPRESSION : type;
    String extPattern = (ext == null) ? typePattern : ext;
    ArtifactId aid = new ArtifactId(new ModuleId(orgPattern, modulePattern), artifactPattern, typePattern, extPattern);
    return new DefaultExcludeRule(aid, settings.getMatcher(matcherName), null);
}
Also used : ModuleId(org.apache.ivy.core.module.id.ModuleId) DefaultExcludeRule(org.apache.ivy.core.module.descriptor.DefaultExcludeRule) ArtifactId(org.apache.ivy.core.module.id.ArtifactId)

Example 7 with DefaultExcludeRule

use of org.apache.ivy.core.module.descriptor.DefaultExcludeRule in project ant-ivy by apache.

the class IvyResolve method doExecute.

@Override
public void doExecute() throws BuildException {
    Ivy ivy = getIvyInstance();
    IvySettings settings = ivy.getSettings();
    try {
        conf = getProperty(conf, settings, "ivy.configurations");
        type = getProperty(type, settings, "ivy.resolve.default.type.filter");
        String[] confs = splitToArray(conf);
        boolean childs = !dependencies.isEmpty() || !excludes.isEmpty() || !conflicts.isEmpty();
        ResolveReport report;
        if (childs) {
            if (isInline()) {
                throw new BuildException("the inline mode is incompatible with child elements");
            }
            if (organisation != null) {
                throw new BuildException("'organisation' is not allowed with child elements");
            }
            if (module != null) {
                throw new BuildException("'module' is not allowed with child elements");
            }
            if (file != null) {
                throw new BuildException("'file' not allowed with child elements");
            }
            if (!getAllowedLogOptions().contains(log)) {
                throw new BuildException("invalid option for 'log': " + log + ". Available options are " + getAllowedLogOptions());
            }
            ModuleRevisionId mrid = ModuleRevisionId.newInstance("", "", Ivy.getWorkingRevision());
            DefaultModuleDescriptor md = DefaultModuleDescriptor.newBasicInstance(mrid, null);
            for (IvyDependency dep : dependencies) {
                DependencyDescriptor dd = dep.asDependencyDescriptor(md, "default", settings);
                md.addDependency(dd);
            }
            for (IvyExclude exclude : excludes) {
                DefaultExcludeRule rule = exclude.asRule(settings);
                rule.addConfiguration("default");
                md.addExcludeRule(rule);
            }
            for (IvyConflict conflict : conflicts) {
                conflict.addConflict(md, settings);
            }
            report = ivy.resolve(md, getResolveOptions(ivy, new String[] { "default" }, settings));
        } else if (isInline()) {
            if (organisation == null) {
                throw new BuildException("'organisation' is required when using inline mode");
            }
            if (module == null) {
                throw new BuildException("'module' is required when using inline mode");
            }
            if (file != null) {
                throw new BuildException("'file' not allowed when using inline mode");
            }
            if (!getAllowedLogOptions().contains(log)) {
                throw new BuildException("invalid option for 'log': " + log + ". Available options are " + getAllowedLogOptions());
            }
            for (int i = 0; i < confs.length; i++) {
                if ("*".equals(confs[i])) {
                    confs[i] = "*(public)";
                }
            }
            if (revision == null) {
                revision = "latest.integration";
            }
            report = ivy.resolve(ModuleRevisionId.newInstance(organisation, module, branch, revision), getResolveOptions(ivy, confs, settings), changing);
        } else {
            if (organisation != null) {
                throw new BuildException("'organisation' not allowed when not using 'org' attribute");
            }
            if (module != null) {
                throw new BuildException("'module' not allowed when not using 'org' attribute");
            }
            if (file == null) {
                file = getProject().resolveFile(getProperty(settings, "ivy.dep.file"));
            }
            report = ivy.resolve(file.toURI().toURL(), getResolveOptions(ivy, confs, settings));
        }
        if (report.hasError()) {
            if (failureProperty != null) {
                getProject().setProperty(failureProperty, "true");
            }
            if (isHaltonfailure()) {
                throw new BuildException("resolve failed - see output for details");
            }
        }
        setResolved(report, resolveId, isKeep());
        confs = report.getConfigurations();
        if (isKeep()) {
            ModuleDescriptor md = report.getModuleDescriptor();
            // 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
            String mdOrg = md.getModuleRevisionId().getOrganisation();
            String mdName = md.getModuleRevisionId().getName();
            String mdRev = md.getResolvedModuleRevisionId().getRevision();
            getProject().setProperty("ivy.organisation", mdOrg);
            settings.setVariable("ivy.organisation", mdOrg);
            getProject().setProperty("ivy.module", mdName);
            settings.setVariable("ivy.module", mdName);
            getProject().setProperty("ivy.revision", mdRev);
            settings.setVariable("ivy.revision", mdRev);
            List<ExtendsDescriptor> parents = Arrays.asList(md.getInheritedDescriptors());
            for (ExtendsDescriptor parent : parents) {
                int i = parents.indexOf(parent);
                String parentOrg = parent.getResolvedParentRevisionId().getOrganisation();
                String parentModule = parent.getResolvedParentRevisionId().getName();
                String parentRevision = parent.getResolvedParentRevisionId().getRevision();
                String parentBranch = parent.getResolvedParentRevisionId().getBranch();
                getProject().setProperty("ivy.parent[" + i + "].organisation", parentOrg);
                settings.setVariable("ivy.parent[" + i + "].organisation", parentOrg);
                getProject().setProperty("ivy.parent[" + i + "].module", parentModule);
                settings.setVariable("ivy.parent[" + i + "].module", parentModule);
                getProject().setProperty("ivy.parent[" + i + "].revision", parentRevision);
                settings.setVariable("ivy.parent[" + i + "].revision", parentRevision);
                if (parentBranch != null) {
                    getProject().setProperty("ivy.parent[" + i + "].branch", parentBranch);
                    settings.setVariable("ivy.parent[" + i + "].branch", parentBranch);
                }
            }
            getProject().setProperty("ivy.parents.count", String.valueOf(md.getInheritedDescriptors().length));
            settings.setVariable("ivy.parents.count", String.valueOf(md.getInheritedDescriptors().length));
            Boolean hasChanged = null;
            if (getCheckIfChanged()) {
                hasChanged = report.hasChanged();
                getProject().setProperty("ivy.deps.changed", hasChanged.toString());
                settings.setVariable("ivy.deps.changed", hasChanged.toString());
            }
            getProject().setProperty("ivy.resolved.configurations", mergeConfs(confs));
            settings.setVariable("ivy.resolved.configurations", mergeConfs(confs));
            if (file != null) {
                getProject().setProperty("ivy.resolved.file", file.getAbsolutePath());
                settings.setVariable("ivy.resolved.file", file.getAbsolutePath());
            }
            if (resolveId != null) {
                getProject().setProperty("ivy.organisation." + resolveId, mdOrg);
                settings.setVariable("ivy.organisation." + resolveId, mdOrg);
                getProject().setProperty("ivy.module." + resolveId, mdName);
                settings.setVariable("ivy.module." + resolveId, mdName);
                getProject().setProperty("ivy.revision." + resolveId, mdRev);
                settings.setVariable("ivy.revision." + resolveId, mdRev);
                if (getCheckIfChanged()) {
                    // hasChanged has already been set earlier
                    getProject().setProperty("ivy.deps.changed." + resolveId, hasChanged.toString());
                    settings.setVariable("ivy.deps.changed." + resolveId, hasChanged.toString());
                }
                getProject().setProperty("ivy.resolved.configurations." + resolveId, mergeConfs(confs));
                settings.setVariable("ivy.resolved.configurations." + resolveId, mergeConfs(confs));
                if (file != null) {
                    getProject().setProperty("ivy.resolved.file." + resolveId, file.getAbsolutePath());
                    settings.setVariable("ivy.resolved.file." + resolveId, file.getAbsolutePath());
                }
            }
        }
    } catch (MalformedURLException e) {
        throw new BuildException("unable to convert given ivy file to url: " + file + ": " + e, e);
    } catch (ParseException e) {
        log(e.getMessage(), Project.MSG_ERR);
        throw new BuildException("syntax errors in ivy file: " + e, e);
    } catch (ResolveProcessException e) {
        throw new BuildException("impossible to resolve dependencies:\n\t" + e.getMessage(), e);
    } catch (Exception e) {
        throw new BuildException("impossible to resolve dependencies:\n\t" + e, e);
    }
}
Also used : MalformedURLException(java.net.MalformedURLException) DependencyDescriptor(org.apache.ivy.core.module.descriptor.DependencyDescriptor) IvySettings(org.apache.ivy.core.settings.IvySettings) ModuleRevisionId(org.apache.ivy.core.module.id.ModuleRevisionId) Ivy(org.apache.ivy.Ivy) MalformedURLException(java.net.MalformedURLException) BuildException(org.apache.tools.ant.BuildException) ResolveProcessException(org.apache.ivy.core.resolve.ResolveProcessException) ParseException(java.text.ParseException) DefaultExcludeRule(org.apache.ivy.core.module.descriptor.DefaultExcludeRule) DefaultModuleDescriptor(org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor) ModuleDescriptor(org.apache.ivy.core.module.descriptor.ModuleDescriptor) ExtendsDescriptor(org.apache.ivy.core.module.descriptor.ExtendsDescriptor) ResolveReport(org.apache.ivy.core.report.ResolveReport) ResolveProcessException(org.apache.ivy.core.resolve.ResolveProcessException) BuildException(org.apache.tools.ant.BuildException) ParseException(java.text.ParseException) DefaultModuleDescriptor(org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor)

Aggregations

DefaultExcludeRule (org.apache.ivy.core.module.descriptor.DefaultExcludeRule)7 ArtifactId (org.apache.ivy.core.module.id.ArtifactId)5 ModuleId (org.apache.ivy.core.module.id.ModuleId)4 ModuleRevisionId (org.apache.ivy.core.module.id.ModuleRevisionId)4 DefaultDependencyDescriptor (org.apache.ivy.core.module.descriptor.DefaultDependencyDescriptor)3 HashMap (java.util.HashMap)2 DefaultModuleDescriptor (org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor)2 DependencyDescriptor (org.apache.ivy.core.module.descriptor.DependencyDescriptor)2 BuildException (org.apache.tools.ant.BuildException)2 MalformedURLException (java.net.MalformedURLException)1 URI (java.net.URI)1 ParseException (java.text.ParseException)1 Date (java.util.Date)1 HashSet (java.util.HashSet)1 LinkedHashMap (java.util.LinkedHashMap)1 Map (java.util.Map)1 Ivy (org.apache.ivy.Ivy)1 Configuration (org.apache.ivy.core.module.descriptor.Configuration)1 DefaultArtifact (org.apache.ivy.core.module.descriptor.DefaultArtifact)1 DefaultDependencyArtifactDescriptor (org.apache.ivy.core.module.descriptor.DefaultDependencyArtifactDescriptor)1