protected List getProjects()

in src/main/java/org/apache/maven/plugin/resources/remote/AbstractProcessRemoteResourcesMojo.java [509:575]


    protected List<MavenProject> getProjects() {
        List<MavenProject> projects = new ArrayList<>();

        // add filters in well known order, least specific to most specific
        FilterArtifacts filter = new FilterArtifacts();

        Set<Artifact> artifacts = new LinkedHashSet<>(getAllDependencies());
        if (this.excludeTransitive) {
            filter.addFilter(new ProjectTransitivityFilter(getDirectDependencies(), true));
        }

        filter.addFilter(new ScopeFilter(this.includeScope, this.excludeScope));
        filter.addFilter(new GroupIdFilter(this.includeGroupIds, this.excludeGroupIds));
        filter.addFilter(new ArtifactIdFilter(this.includeArtifactIds, this.excludeArtifactIds));

        // perform filtering
        try {
            artifacts = filter.filter(artifacts);
        } catch (ArtifactFilterException e) {
            throw new IllegalStateException(e.getMessage(), e);
        }

        getLog().debug("PROJECTS: " + artifacts);

        for (Artifact artifact : artifacts) {
            if (artifact.isSnapshot()) {
                artifact.setVersion(artifact.getBaseVersion());
            }

            getLog().debug("Building project for " + artifact);
            MavenProject p;
            try {
                ProjectBuildingRequest req = new DefaultProjectBuildingRequest()
                        .setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL)
                        .setProcessPlugins(false)
                        .setRepositorySession(mavenSession.getRepositorySession())
                        .setSystemProperties(mavenSession.getSystemProperties())
                        .setUserProperties(mavenSession.getUserProperties())
                        .setLocalRepository(mavenSession.getLocalRepository())
                        .setRemoteRepositories(project.getRemoteArtifactRepositories());
                ProjectBuildingResult res = projectBuilder.build(artifact, req);
                p = res.getProject();
            } catch (ProjectBuildingException e) {
                getLog().warn("Invalid project model for artifact [" + artifact.getGroupId() + ":"
                        + artifact.getArtifactId() + ":" + artifact.getVersion() + "]. "
                        + "It will be ignored by the remote resources Mojo.");
                continue;
            }

            String supplementKey = generateSupplementMapKey(
                    p.getModel().getGroupId(), p.getModel().getArtifactId());

            if (supplementModels.containsKey(supplementKey)) {
                Model mergedModel = mergeModels(p.getModel(), supplementModels.get(supplementKey));
                MavenProject mergedProject = new MavenProject(mergedModel);
                projects.add(mergedProject);
                mergedProject.setArtifact(artifact);
                mergedProject.setVersion(artifact.getVersion());
                getLog().debug("Adding project with groupId [" + mergedProject.getGroupId() + "] (supplemented)");
            } else {
                projects.add(p);
                getLog().debug("Adding project with groupId [" + p.getGroupId() + "]");
            }
        }
        projects.sort(new ProjectComparator());
        return projects;
    }