protected void doExecute()

in src/main/java/org/apache/maven/plugins/dependency/ListRepositoriesMojo.java [65:122]


    protected void doExecute() throws MojoExecutionException {

        CollectRequest request = new CollectRequest();
        request.setRepositories(getProject().getRemoteProjectRepositories());
        request.setRootArtifact(RepositoryUtils.toArtifact(getProject().getArtifact()));

        ArtifactTypeRegistry artifactTypeRegistry =
                session.getRepositorySession().getArtifactTypeRegistry();

        request.setDependencies(getProject().getDependencies().stream()
                .map(d -> RepositoryUtils.toDependency(d, artifactTypeRegistry))
                .collect(Collectors.toList()));

        request.setManagedDependencies(Optional.ofNullable(getProject().getDependencyManagement())
                .map(DependencyManagement::getDependencies)
                .orElseGet(Collections::emptyList)
                .stream()
                .map(d -> RepositoryUtils.toDependency(d, artifactTypeRegistry))
                .collect(Collectors.toList()));

        try {
            CollectResult collectResult = repositorySystem.collectDependencies(session.getRepositorySession(), request);
            Set<RemoteRepository> repositories = new HashSet<>();
            collectResult.getRoot().accept(new TreeDependencyVisitor(new DependencyVisitor() {
                @Override
                public boolean visitEnter(DependencyNode node) {
                    repositories.addAll(node.getRepositories());
                    return true;
                }

                @Override
                public boolean visitLeave(DependencyNode node) {
                    return true;
                }
            }));

            if (repositories.isEmpty()) {
                getLog().info("No remote repository is used by this build." + System.lineSeparator());
                return;
            }

            StringBuilder message = new StringBuilder();

            Map<Boolean, List<RemoteRepository>> repoGroupByMirrors = repositories.stream()
                    .collect(Collectors.groupingBy(
                            repo -> repo.getMirroredRepositories().isEmpty()));

            prepareRemoteRepositoriesList(
                    message, repoGroupByMirrors.getOrDefault(Boolean.TRUE, Collections.emptyList()));
            prepareRemoteMirrorRepositoriesList(
                    message, repoGroupByMirrors.getOrDefault(Boolean.FALSE, Collections.emptyList()));

            getLog().info(message);

        } catch (DependencyCollectionException e) {
            throw new MojoExecutionException(e.getMessage(), e);
        }
    }