private File getIvyfile(String org, String name, String rev, String[] confs, Set<Map<String, Object>> artifacts) throws IOException { File ivyfile; ivyfile = File.createTempFile("ivy", ".xml"); ivyfile.deleteOnExit(); DefaultModuleDescriptor md = DefaultModuleDescriptor .newDefaultInstance(ModuleRevisionId.newInstance(org, name + "-caller", "working")); DefaultDependencyDescriptor dd = new DefaultDependencyDescriptor(md, ModuleRevisionId.newInstance(org, name, rev), false, false, true); if (artifacts != null && !artifacts.isEmpty()) { for (Map<String, Object> artifact : artifacts) { String artifactName = (String) artifact.get("name"); String artifactType = (String) artifact.get("type"); String artifactExt = (String) artifact.get("ext"); URL artifactUrl = (URL) artifact.get("url"); Map<?, ?> extraAttributes = (Map<?, ?>) artifact.get("extraAttributes"); DefaultDependencyArtifactDescriptor dad = new DefaultDependencyArtifactDescriptor(dd, artifactName, artifactType, artifactExt, artifactUrl, extraAttributes); dd.addDependencyArtifact("default", dad); } } for (int i = 0; i < confs.length; i++) { dd.addDependencyConfiguration("default", confs[i]); } md.addDependency(dd); md.addExtraAttributeNamespace("m", "http://ant.apache.org/ivy/maven"); XmlModuleDescriptorWriter.write(md, ivyfile); return ivyfile; }
void addArtifact(DefaultDependencyDescriptor dd, String masterConf) { String typePattern = type == null ? PatternMatcher.ANY_EXPRESSION : type; String extPattern = ext == null ? typePattern : ext; URL u; try { u = url == null ? null : new URL(url); } catch (MalformedURLException e) { throw new BuildException("Malformed url in the artifact: " + e.getMessage(), e); } DefaultDependencyArtifactDescriptor dad = new DefaultDependencyArtifactDescriptor(dd, name, typePattern, extPattern, u, null); dd.addDependencyArtifact(masterConf, dad); } }
protected void addConfiguration(String c) { confAware.addConfiguration(c); if (state == State.EXCLUDE) { // we are adding a configuration to a module wide exclude rule // we have nothing special to do here, the rule has already been added to the module // descriptor } else { // we are currently adding a configuration to either an include, exclude or artifact // element // of a dependency. This means that we have to add this element to the corresponding // conf // of the current dependency descriptor if (confAware instanceof DependencyArtifactDescriptor) { dd.addDependencyArtifact(c, (DependencyArtifactDescriptor) confAware); } else if (confAware instanceof IncludeRule) { dd.addIncludeRule(c, (IncludeRule) confAware); } else if (confAware instanceof ExcludeRule) { dd.addExcludeRule(c, (ExcludeRule) confAware); } } }
dd.addDependencyArtifact(optionalizedScope, depArtifact);