private Set<String> getMavenArtifacts(Set<ArtifactDependencyGraph.HashableResolvedArtifactResult> allArtifacts) { Set<String> deps = new HashSet<>(); for (ArtifactDependencyGraph.HashableResolvedArtifactResult result : allArtifacts) { ComponentIdentifier id = result.getId().getComponentIdentifier(); if (id instanceof ModuleComponentIdentifier) { ModuleComponentIdentifier module = (ModuleComponentIdentifier) id; deps.add(String.join(":", module.getGroup(), module.getModule(), module.getVersion())); } } return deps; } }
@Nullable public static String findVersionInClasspath(Project project, String group, String module) { return project .getBuildscript() .getConfigurations() .getByName("classpath") .getIncoming() .getArtifacts() .getArtifacts() .stream() .flatMap( artifactResult -> artifactResult.getId().getComponentIdentifier() instanceof ModuleComponentIdentifier ? Stream.of( (ModuleComponentIdentifier) artifactResult.getId().getComponentIdentifier()) : Stream.empty()) .filter( identifier -> (group.equals(identifier.getGroup()) && module.equals(identifier.getModule()))) .findFirst() .map(ModuleComponentIdentifier::getVersion) .orElse(null); }
.stream() .filter(artifact -> canHaveSources(artifact.getFile())) .map(artifact -> artifact.getId().getComponentIdentifier()) .collect(Collectors.toSet()); .collect( Collectors.toMap( resolvedArtifact -> resolvedArtifact.getId().getComponentIdentifier(), resolvedArtifact -> resolvedArtifact));
private ArtifactVersionId getCandidateArtifactVersionId(ModuleComponentIdentifier candidate) { return new ArtifactVersionId(candidate.getGroup(), candidate.getModule(), candidate.getVersion()); }
private DependencyCandidate toDependencyCandidate( UnresolvedDependencyResult unresolved) { ComponentSelector attemptedSelector = unresolved.getAttempted(); if (!(attemptedSelector instanceof ModuleComponentSelector)) { return null; } ModuleComponentSelector attemptedModuleSelector = (ModuleComponentSelector) attemptedSelector; return new DependencyCandidate(attemptedModuleSelector .getGroup(), attemptedModuleSelector.getModule()); }
@Override public void execute(DependencyResult result) { if (result instanceof ResolvedDependencyResult) { ResolvedDependencyResult resolvedResult = (ResolvedDependencyResult) result; ComponentSelector requested = resolvedResult.getRequested(); if (requested instanceof ModuleComponentSelector) { ModuleComponentSelector requestedSelector = (ModuleComponentSelector) requested; String requestedVersion = requestedSelector.getVersion(); ComponentIdentifier selected = resolvedResult.getSelected().getId(); if (selected instanceof ProjectComponentIdentifier) { ProjectComponentIdentifier selectedProjectComponent = (ProjectComponentIdentifier) selected; ProjectInternal selectedProject = projectFinder.getProject(selectedProjectComponent.getProjectPath()); Object selectedVersionObject = selectedProject.getVersion(); if (selectedVersionObject != null) { String selectedVersion = selectedVersionObject.toString(); if (!matchVersion(requestedVersion, selectedVersion)) { String conflict = String.format("Configuration \"%s\" in project \"%s\" requests version %s of project \"%s\", but its current version (%s) does not fulfill that request", configuration.getName(), getProject().getPath(), requestedVersion, selectedProject.getPath(), selectedVersion); versionConflicts.add(conflict); } } } } } } });
((ProjectComponentIdentifier) id).getProjectPath() : null;
"".equals(depResult.getFrom().getId().getDisplayName())) { String depFromString = ("" + depResult.getFrom().getId().getDisplayName()); if (depFromString.startsWith("project ")) {
static Set<String> getResolvedModuleIdentifiers(Project project) { return project.getConfigurations().stream() .filter(Configuration::isCanBeResolved) .flatMap(configuration -> { try { ResolutionResult resolutionResult = configuration.getIncoming().getResolutionResult(); return resolutionResult .getAllComponents() .stream() .map(result -> result.getId()) .filter(cid -> !cid.equals(resolutionResult.getRoot().getId())) // remove the project .filter(cid -> cid instanceof ModuleComponentIdentifier) .map(mcid -> ((ModuleComponentIdentifier) mcid).getModuleIdentifier()) .map(mid -> mid.getGroup() + ":" + mid.getName()); } catch (Exception e) { throw new RuntimeException(String.format("Error during resolution of the dependency graph of " + "configuration %s", configuration), e); } }) .collect(Collectors.toSet()); } }
.filter( artifact -> !(artifact.getId().getComponentIdentifier() instanceof ProjectComponentIdentifier)) .filter(artifact -> DependencyUtils.isConsumable(artifact.getFile())) .map( artifact -> { ComponentIdentifier identifier = artifact.getId().getComponentIdentifier(); ResolvedArtifactResult sourcesArtifact = componentIdToSourcesArtifactMap.get(identifier); && ((ModuleComponentIdentifier) identifier).getVersion().length() > 0) { ModuleComponentIdentifier moduleIdentifier = (ModuleComponentIdentifier) identifier; return DependencyFactory.from( moduleIdentifier.getGroup(), moduleIdentifier.getModule(), moduleIdentifier.getVersion(), artifact.getFile(), sourcesArtifact != null ? sourcesArtifact.getFile() : null,
/** * Resolve all dependencies of all configurations of this project and it's subprojects. * * @return All resolved dependencies. */ protected List<DependencyIdentifier> resolveDependencies() { return getProject().getAllprojects().stream() // all projects .flatMap(project -> project.getConfigurations().stream()) // get all configurations .filter(Configuration::isCanBeResolved) // only if the configuration can be resolved .flatMap(configuration -> configuration.getResolvedConfiguration().getResolvedArtifacts().stream()) // get all artifacts .filter(resolvedArtifact -> !(resolvedArtifact.getId().getComponentIdentifier() instanceof DefaultProjectComponentIdentifier)) .map(resolvedArtifact -> resolvedArtifact.getModuleVersion().getId()) // map to ModuleVersionIdentifier .map(DependencyIdentifier::new) // .distinct() // .filter(this::filterIgnoredDependencies) // .sorted(new DependencyIdentifierComparator()) // .collect(Collectors.toList()); }
@Override public void execute(DependencySubstitution details) { // Skip components that are not external components if (!(details.getRequested() instanceof ModuleComponentSelector)) { return; } ModuleComponentSelector selector = (ModuleComponentSelector) details.getRequested(); if (modulesToProjectsMapping == null) { modulesToProjectsMapping = Maps.newTreeMap(); for (Project project : projects) { modulesToProjectsMapping.put(project.getGroup() + ":" + project.getName(), project); } logger.info("Modules to projects mapping: {}", modulesToProjectsMapping); } String id = selector.getGroup() + ":" + selector.getModule(); Project dependentProject = modulesToProjectsMapping.get(id); if (dependentProject != null) { logger.info("Replaced external dependency {} with {}", selector, dependentProject); details.useTarget(dependentProject); } } }
@Override public void execute(DependencyResult result) { if (result instanceof ResolvedDependencyResult) { ResolvedDependencyResult resolvedResult = (ResolvedDependencyResult) result; ComponentSelector requested = resolvedResult.getRequested(); if (requested instanceof ModuleComponentSelector) { ModuleComponentSelector requestedSelector = (ModuleComponentSelector) requested; String requestedVersion = requestedSelector.getVersion(); ComponentIdentifier selected = resolvedResult.getSelected().getId(); if (selected instanceof ProjectComponentIdentifier) { ProjectComponentIdentifier selectedProjectComponent = (ProjectComponentIdentifier) selected; ProjectInternal selectedProject = projectFinder.getProject(selectedProjectComponent.getProjectPath()); Object selectedVersionObject = selectedProject.getVersion(); if (selectedVersionObject != null) { String selectedVersion = selectedVersionObject.toString(); if (!matchVersion(requestedVersion, selectedVersion)) { String conflict = String.format("Configuration \"%s\" in project \"%s\" requests version %s of project \"%s\", but its current version (%s) does not fulfill that request", configuration.getName(), getProject().getPath(), requestedVersion, selectedProject.getPath(), selectedVersion); versionConflicts.add(conflict); } } } } } } });
((ProjectComponentIdentifier) id).getProjectPath() : null; if (identifier instanceof ProjectComponentIdentifier) { String projectPath = ((ProjectComponentIdentifier) identifier).getProjectPath();
"".equals(depResult.getFrom().getId().getDisplayName())) { String depFromString = ("" + depResult.getFrom().getId().getDisplayName()); if (depFromString.startsWith("project ")) {
(ProjectComponentIdentifier) artifact.getId().getComponentIdentifier(); VariantAttr variantAttr = artifact.getVariant().getAttributes().getAttribute(VariantAttr.ATTRIBUTE); String variant = variantAttr == null ? null : variantAttr.getName(); Project identifierProject = project.project(identifier.getProjectPath()); targetDeps.add( ProjectCache.getTargetCache(identifierProject).getTargetForVariant(variant)); ComponentIdentifier identifier = artifact.getId().getComponentIdentifier(); ResolvedArtifactResult sourcesArtifact = componentIdToSourcesArtifactMap.get(identifier); && ((ModuleComponentIdentifier) identifier).getVersion().length() > 0) { ModuleComponentIdentifier moduleIdentifier = (ModuleComponentIdentifier) identifier; moduleIdentifier.getGroup(), moduleIdentifier.getModule(), moduleIdentifier.getVersion(), artifact.getFile(), sourcesArtifact != null ? sourcesArtifact.getFile() : null,
/** * Create Eclipse annotations tasks * * @param tasks Task container * @param configurations Container to access configurations * @param buildDir Build directory */ @Mutate public void createEclipseAnnotationsTasks(ModelMap<Task> tasks, ConfigurationContainer configurations, @Path("buildDir") File buildDir) { tasks.create("eclipseAnnotations", EclipseAnnotationsTask.class, t -> { t.setDescription("Generates external nullability annotations for dependencies."); t.setGroup("IDE"); ConventionMapping parameters = t.getConventionMapping(); parameters.map("jars", () -> { Set<File> jars = configurations.stream() .filter(c -> c.isCanBeResolved() && !c.getName().equals(JavaConfigPlugin.ANNOTATIONS_CONFIGURATION)) .map(c -> c.getResolvedConfiguration().getLenientConfiguration()) .flatMap(c -> c.getArtifacts().stream() .filter(a -> !(a.getId() .getComponentIdentifier() instanceof ProjectComponentIdentifier) && a.getType().equals("jar")) .map(a -> a.getFile())) .collect(Collectors.toSet()); return jars; }); }); }
@Override public void execute(DependencySubstitution details) { // Skip components that are not external components if (!(details.getRequested() instanceof ModuleComponentSelector)) { return; } ModuleComponentSelector selector = (ModuleComponentSelector) details.getRequested(); if (modulesToProjectsMapping == null) { modulesToProjectsMapping = Maps.newTreeMap(); for (Project project : projects) { modulesToProjectsMapping.put(project.getGroup() + ":" + project.getName(), project); } logger.info("Modules to projects mapping: {}", modulesToProjectsMapping); } String id = selector.getGroup() + ":" + selector.getModule(); Project dependentProject = modulesToProjectsMapping.get(id); if (dependentProject != null) { logger.info("Replaced external dependency {} with {}", selector, dependentProject); details.useTarget(dependentProject); } } }
/** * Create Eclipse annotations tasks * * @param tasks Task container * @param configurations Container to access configurations * @param buildDir Build directory */ @Mutate public void createEclipseAnnotationsTasks(ModelMap<Task> tasks, ConfigurationContainer configurations, @Path("buildDir") File buildDir) { tasks.create("eclipseAnnotations", EclipseAnnotationsTask.class, t -> { t.setDescription("Generates external nullability annotations for dependencies."); t.setGroup("IDE"); ConventionMapping parameters = t.getConventionMapping(); parameters.map("jars", () -> { Set<File> jars = configurations.stream() .filter(c -> c.isCanBeResolved() && !c.getName().equals(JavaConfigPlugin.ANNOTATIONS_CONFIGURATION)) .map(c -> c.getResolvedConfiguration().getLenientConfiguration()) .flatMap(c -> c.getArtifacts().stream() .filter(a -> !(a.getId() .getComponentIdentifier() instanceof ProjectComponentIdentifier) && a.getType().equals("jar")) .map(a -> a.getFile())) .collect(Collectors.toSet()); return jars; }); }); }
idMap.put(artifact.getId().getComponentIdentifier(), module);