private void resolveProperties(AnnotatedProperties properties, DependencySet dependencySet) { for (Iterator i = dependencySet.getSubsets().iterator(); i.hasNext(); ) { resolveProperties(properties, (DependencySet) i.next()); } if (dependencySet.getProperties() != null) { properties.putAll( applyProfiles(dependencySet.getProperties(), project.getActiveProfiles().getElements())); } }
public Set getLicenses() { Set licenses = new HashSet(); for (Iterator i = depthFirst(project.getDependencySet()).iterator(); i.hasNext(); ) { DependencySet set = (DependencySet) i.next(); licenses.addAll(set.getLicenses()); } return licenses; }
public ResolvedPath getReslovedProjectPath( String id, boolean mergeWithCore, boolean overrideCore, boolean flatten, List appliedOverrides) { log.debug( "Getting project path: id=" + id + ", mergeWithCore=" + mergeWithCore + ", overrideCore=" + overrideCore + ", flatten=" + flatten); RepoArtifact artifact = new RepoArtifact(); for (Iterator i = depthFirst(project.getDependencySet()).iterator(); i.hasNext(); ) { DependencySet set = (DependencySet) i.next(); // Add dependencies for (Iterator j = set.getDependencies().iterator(); j.hasNext(); ) { RepoDependency dependency = (RepoDependency) j.next(); artifact.addDependency(dependency); } // Add core overrides first if applicable if (overrideCore) { for (Iterator j = coreOverrides.iterator(); j.hasNext(); ) { RepoOverride override = (RepoOverride) j.next(); artifact.addOverride(override); } } // Add overrides for (Iterator j = set.getOverrides().iterator(); j.hasNext(); ) { RepoOverride override = (RepoOverride) j.next(); artifact.addOverride(override); } } // Copy the project paths to the artifact for (Iterator i = resolvedPaths.values().iterator(); i.hasNext(); ) { RepoPath path = (RepoPath) i.next(); artifact.addPath(path); } ResolvedPath path = pathResolver.resolvePath(id, artifact, appliedOverrides, false, true); path.setId("Project path '" + id + "'"); path = handleMergeAndFlatten(mergeWithCore, flatten, path); return path; }
private void getDependencies(Set dependencies, DependencySet dependencySet) { for (Iterator i = dependencySet.getDependencies().iterator(); i.hasNext(); ) { Dependency dependency = (Dependency) i.next(); if (dependency.getClass().equals(Dependency.class)) { dependencies.add(dependency.getId()); } } for (Iterator i = dependencySet.getSubsets().iterator(); i.hasNext(); ) { DependencySet subSet = (DependencySet) i.next(); // dependencies.add(subSet.getArtifact().getId()); getDependencies(dependencies, subSet); } }
private void depthFirst(List sets, DependencySet dependencySet) { sets.add(dependencySet); for (Iterator i = dependencySet.getSubsets().iterator(); i.hasNext(); ) { DependencySet subset = (DependencySet) i.next(); depthFirst(sets, subset); } }
private void addPathSpecDefaults(DependencySet dependencySet) { for (Iterator i = dependencySet.getDependencies().iterator(); i.hasNext(); ) { RepoDependency dependency = (RepoDependency) i.next(); for (Iterator j = dependency.getPathSpecs().iterator(); j.hasNext(); ) { RepoPathSpec pathSpec = (RepoPathSpec) j.next(); if (dependency instanceof PluginDependency) { // TODO: use defaults for plugin dependencies (from path defined in the repository?) } else { RepoPath path = (RepoPath) resolvedPaths.get(pathSpec.getTo()); Assert.isTrue( path != null, pathSpec.getLocator(), "The 'to' path '" + pathSpec.getTo() + "' is not defined in the project"); pathSpec.mergeDefaults(path); } } } }
public void initialise() { pathResolver = new Resolver(repository, log); // Add ant-types path project .getDependencySet() .addPath( new Path( "ant-types", "Dependencies added to this path are available to ant optional tasks.")); // Get dependency sets, applying profiles and overrides List sets = depthFirst(project.getDependencySet()); // O pass: aggregate overrides for (Iterator i = sets.iterator(); i.hasNext(); ) { DependencySet set = (DependencySet) i.next(); overrides.addAll(set.getOverrides()); } // 1st pass: Define targets, paths, imported URLs Map targets = new HashMap(); for (Iterator i = sets.iterator(); i.hasNext(); ) { DependencySet set = (DependencySet) i.next(); // Get targets for (Iterator j = set.getDependencies().iterator(); j.hasNext(); ) { Dependency dependency = (Dependency) j.next(); if (dependency instanceof PluginDependency) { resolveTargets(targets, (PluginDependency) dependency); } } // Get paths for (Iterator j = set.getPaths().values().iterator(); j.hasNext(); ) { addPath((Path) j.next()); } if (set.getImportURL() != null) { resolvedImports.add(set.getImportURL()); } // Find the unique names for all declared artifacts Set uniqueNames = new HashSet(); for (Iterator j = project.getArtifacts().iterator(); j.hasNext(); ) { Artifact artifact = (Artifact) j.next(); uniqueNames.add(artifact.getId().getName()); } // Create artifacts for any licenses referenced by files for (Iterator j = set.getLicenses().iterator(); j.hasNext(); ) { License license = (License) j.next(); if (license.getFile() != null) { Assert.isTrue( project.getArtifacts().size() != 0, license.getLocator(), "There are no artifacts defined for a license to be applied to."); Artifact artifact = (Artifact) project.getArtifacts().iterator().next(); RepoArtifactId id = artifact.getId(); // If no name is specified, default it to name of the artifact if it is unique, // otherwise use the default from the group String name = license.getId().getName(); String defaultName = RepoArtifactId.defaultName(id.getGroup()); if (name == null) { if (uniqueNames.size() == 1) { name = (String) uniqueNames.iterator().next(); } else { name = defaultName; } } Artifact licenseArtifact = new Artifact(id.getGroup(), name, "license", id.getVersion()); licenseArtifact.setDescription( "License for " + id.getGroup() + (name.equals(defaultName) ? "" : (":" + name))); project.addArtifact(licenseArtifact); license.setId(licenseArtifact.getId()); } } } // 2nd pass: Define default paths specs, add imported targets for (Iterator i = sets.iterator(); i.hasNext(); ) { DependencySet set = (DependencySet) i.next(); // Fill in path spec defaults now that the project paths have been defined addPathSpecDefaults(set); } // 3rd pass: Reverse order for build resources List reverse = new ArrayList(sets); Collections.reverse(reverse); for (Iterator i = reverse.iterator(); i.hasNext(); ) { DependencySet set = (DependencySet) i.next(); buildResources.putAll(set.getBuildResources()); // Parent overrides children } resolvedTargets = targets; corePath = resolveCorePath(); if ("true".equals(antProject.getProperty("quokka.project.overrideCore"))) { coreOverrides = getCoreOverrides(); } }