private DependencyNode resolveTransitiveDependencies()

in enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/ResolverUtil.java [113:155]


    private DependencyNode resolveTransitiveDependencies(
            boolean verbose, boolean excludeOptional, List<String> excludedScopes) throws EnforcerRuleException {

        try {
            RepositorySystemSession repositorySystemSession = session.getRepositorySession();

            if (verbose) {
                DefaultRepositorySystemSession defaultRepositorySystemSession =
                        new DefaultRepositorySystemSession(repositorySystemSession);
                defaultRepositorySystemSession.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, true);
                defaultRepositorySystemSession.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, true);
                repositorySystemSession = defaultRepositorySystemSession;
            }

            MavenProject project = session.getCurrentProject();
            ArtifactTypeRegistry artifactTypeRegistry =
                    session.getRepositorySession().getArtifactTypeRegistry();

            List<Dependency> dependencies = project.getDependencies().stream()
                    .filter(d -> !(excludeOptional && d.isOptional()))
                    .filter(d -> !excludedScopes.contains(d.getScope()))
                    .map(d -> RepositoryUtils.toDependency(d, artifactTypeRegistry))
                    .collect(Collectors.toList());

            List<Dependency> managedDependencies = ofNullable(project.getDependencyManagement())
                    .map(DependencyManagement::getDependencies)
                    .map(list -> list.stream()
                            .map(d -> RepositoryUtils.toDependency(d, artifactTypeRegistry))
                            .collect(Collectors.toList()))
                    .orElse(null);

            CollectRequest collectRequest =
                    new CollectRequest(dependencies, managedDependencies, project.getRemoteProjectRepositories());
            collectRequest.setRootArtifact(RepositoryUtils.toArtifact(project.getArtifact()));

            return repositorySystem
                    .collectDependencies(repositorySystemSession, collectRequest)
                    .getRoot();

        } catch (DependencyCollectionException e) {
            throw new EnforcerRuleException("Could not build dependency tree " + e.getLocalizedMessage(), e);
        }
    }