Example usage for org.apache.maven.project MavenProject getManagedVersionMap

List of usage examples for org.apache.maven.project MavenProject getManagedVersionMap

Introduction

In this page you can find the example usage for org.apache.maven.project MavenProject getManagedVersionMap.

Prototype

public Map<String, Artifact> getManagedVersionMap() 

Source Link

Usage

From source file:org.jetbrains.idea.maven.server.Maven30ServerEmbedderImpl.java

License:Apache License

@Nonnull
public MavenExecutionResult doResolveProject(@Nonnull final File file,
        @Nonnull final List<String> activeProfiles, @Nonnull final List<String> inactiveProfiles,
        final List<ResolutionListener> listeners) throws RemoteException {
    final MavenExecutionRequest request = createRequest(file, activeProfiles, inactiveProfiles,
            Collections.<String>emptyList());

    request.setUpdateSnapshots(myAlwaysUpdateSnapshots);

    final AtomicReference<MavenExecutionResult> ref = new AtomicReference<MavenExecutionResult>();

    executeWithMavenSession(request, new Runnable() {
        @Override//from   w  w w  .j  a v  a2s.  c o m
        public void run() {
            try {
                // copied from DefaultMavenProjectBuilder.buildWithDependencies
                ProjectBuilder builder = getComponent(ProjectBuilder.class);

                CustomMaven3ModelInterpolator2 modelInterpolator = (CustomMaven3ModelInterpolator2) getComponent(
                        ModelInterpolator.class);

                String savedLocalRepository = modelInterpolator.getLocalRepository();
                modelInterpolator.setLocalRepository(request.getLocalRepositoryPath().getAbsolutePath());
                List<ProjectBuildingResult> results;

                try {
                    // Don't use build(File projectFile, ProjectBuildingRequest request) , because it don't use cache !!!!!!!! (see http://devnet.jetbrains.com/message/5500218)
                    results = builder.build(Collections.singletonList(new File(file.getPath())), false,
                            request.getProjectBuildingRequest());
                } finally {
                    modelInterpolator.setLocalRepository(savedLocalRepository);
                }

                ProjectBuildingResult buildingResult = results.get(0);

                MavenProject project = buildingResult.getProject();

                RepositorySystemSession repositorySession = getComponent(LegacySupport.class)
                        .getRepositorySession();
                if (repositorySession instanceof DefaultRepositorySystemSession) {
                    ((DefaultRepositorySystemSession) repositorySession)
                            .setTransferListener(new Maven30TransferListenerAdapter(myCurrentIndicator));

                    if (myWorkspaceMap != null) {
                        ((DefaultRepositorySystemSession) repositorySession)
                                .setWorkspaceReader(new Maven30WorkspaceReader(myWorkspaceMap));
                    }
                }

                List<Exception> exceptions = new ArrayList<Exception>();
                loadExtensions(project, exceptions);

                //Artifact projectArtifact = project.getArtifact();
                //Map managedVersions = project.getManagedVersionMap();
                //ArtifactMetadataSource metadataSource = getComponent(ArtifactMetadataSource.class);
                project.setDependencyArtifacts(
                        project.createArtifacts(getComponent(ArtifactFactory.class), null, null));
                //

                if (USE_MVN2_COMPATIBLE_DEPENDENCY_RESOLVING) {
                    ArtifactResolutionRequest resolutionRequest = new ArtifactResolutionRequest();
                    resolutionRequest.setArtifactDependencies(project.getDependencyArtifacts());
                    resolutionRequest.setArtifact(project.getArtifact());
                    resolutionRequest.setManagedVersionMap(project.getManagedVersionMap());
                    resolutionRequest.setLocalRepository(myLocalRepository);
                    resolutionRequest.setRemoteRepositories(project.getRemoteArtifactRepositories());
                    resolutionRequest.setListeners(listeners);

                    resolutionRequest.setResolveRoot(false);
                    resolutionRequest.setResolveTransitively(true);

                    ArtifactResolver resolver = getComponent(ArtifactResolver.class);
                    ArtifactResolutionResult result = resolver.resolve(resolutionRequest);

                    project.setArtifacts(result.getArtifacts());
                    // end copied from DefaultMavenProjectBuilder.buildWithDependencies
                    ref.set(new MavenExecutionResult(project, exceptions));
                } else {
                    final DependencyResolutionResult dependencyResolutionResult = resolveDependencies(project,
                            repositorySession);
                    final List<Dependency> dependencies = dependencyResolutionResult.getDependencies();

                    Set<Artifact> artifacts = new LinkedHashSet<Artifact>(dependencies.size());
                    for (Dependency dependency : dependencies) {
                        final Artifact artifact = RepositoryUtils.toArtifact(dependency.getArtifact());
                        artifact.setScope(dependency.getScope());
                        artifact.setOptional(dependency.isOptional());
                        artifacts.add(artifact);
                        resolveAsModule(artifact);
                    }

                    project.setArtifacts(artifacts);
                    ref.set(new MavenExecutionResult(project, dependencyResolutionResult, exceptions));
                }
            } catch (Exception e) {
                ref.set(handleException(e));
            }
        }
    });

    return ref.get();
}

From source file:org.jetbrains.idea.maven.server.Maven32ServerEmbedderImpl.java

License:Apache License

@Nonnull
public MavenExecutionResult doResolveProject(@Nonnull final File file,
        @Nonnull final List<String> activeProfiles, @Nonnull final List<String> inactiveProfiles,
        final List<ResolutionListener> listeners) throws RemoteException {
    final MavenExecutionRequest request = createRequest(file, activeProfiles, inactiveProfiles,
            Collections.<String>emptyList());

    request.setUpdateSnapshots(myAlwaysUpdateSnapshots);

    final AtomicReference<MavenExecutionResult> ref = new AtomicReference<MavenExecutionResult>();

    executeWithMavenSession(request, new Runnable() {
        @Override//from www  .  j  ava  2s. c o  m
        public void run() {
            try {
                // copied from DefaultMavenProjectBuilder.buildWithDependencies
                ProjectBuilder builder = getComponent(ProjectBuilder.class);

                CustomMaven3ModelInterpolator2 modelInterpolator = (CustomMaven3ModelInterpolator2) getComponent(
                        ModelInterpolator.class);

                String savedLocalRepository = modelInterpolator.getLocalRepository();
                modelInterpolator.setLocalRepository(request.getLocalRepositoryPath().getAbsolutePath());
                List<ProjectBuildingResult> results;

                try {
                    // Don't use build(File projectFile, ProjectBuildingRequest request) , because it don't use cache !!!!!!!! (see http://devnet.jetbrains.com/message/5500218)
                    results = builder.build(Collections.singletonList(new File(file.getPath())), false,
                            request.getProjectBuildingRequest());
                } finally {
                    modelInterpolator.setLocalRepository(savedLocalRepository);
                }

                ProjectBuildingResult buildingResult = results.get(0);

                MavenProject project = buildingResult.getProject();

                RepositorySystemSession repositorySession = getComponent(LegacySupport.class)
                        .getRepositorySession();
                if (repositorySession instanceof DefaultRepositorySystemSession) {
                    ((DefaultRepositorySystemSession) repositorySession)
                            .setTransferListener(new TransferListenerAdapter(myCurrentIndicator));

                    if (myWorkspaceMap != null) {
                        ((DefaultRepositorySystemSession) repositorySession)
                                .setWorkspaceReader(new Maven32WorkspaceReader(myWorkspaceMap));
                    }
                }

                List<Exception> exceptions = new ArrayList<Exception>();
                loadExtensions(project, exceptions);

                //Artifact projectArtifact = project.getArtifact();
                //Map managedVersions = project.getManagedVersionMap();
                //ArtifactMetadataSource metadataSource = getComponent(ArtifactMetadataSource.class);
                project.setDependencyArtifacts(
                        project.createArtifacts(getComponent(ArtifactFactory.class), null, null));
                //

                if (USE_MVN2_COMPATIBLE_DEPENDENCY_RESOLVING) {
                    ArtifactResolutionRequest resolutionRequest = new ArtifactResolutionRequest();
                    resolutionRequest.setArtifactDependencies(project.getDependencyArtifacts());
                    resolutionRequest.setArtifact(project.getArtifact());
                    resolutionRequest.setManagedVersionMap(project.getManagedVersionMap());
                    resolutionRequest.setLocalRepository(myLocalRepository);
                    resolutionRequest.setRemoteRepositories(project.getRemoteArtifactRepositories());
                    resolutionRequest.setListeners(listeners);

                    resolutionRequest.setResolveRoot(false);
                    resolutionRequest.setResolveTransitively(true);

                    ArtifactResolver resolver = getComponent(ArtifactResolver.class);
                    ArtifactResolutionResult result = resolver.resolve(resolutionRequest);

                    project.setArtifacts(result.getArtifacts());
                    // end copied from DefaultMavenProjectBuilder.buildWithDependencies
                    ref.set(new MavenExecutionResult(project, exceptions));
                } else {
                    final DependencyResolutionResult dependencyResolutionResult = resolveDependencies(project,
                            repositorySession);
                    final List<Dependency> dependencies = dependencyResolutionResult.getDependencies();

                    Set<Artifact> artifacts = new LinkedHashSet<Artifact>(dependencies.size());
                    for (Dependency dependency : dependencies) {
                        final Artifact artifact = RepositoryUtils.toArtifact(dependency.getArtifact());
                        artifact.setScope(dependency.getScope());
                        artifact.setOptional(dependency.isOptional());
                        artifacts.add(artifact);
                        resolveAsModule(artifact);
                    }

                    project.setArtifacts(artifacts);
                    ref.set(new MavenExecutionResult(project, dependencyResolutionResult, exceptions));
                }
            } catch (Exception e) {
                ref.set(handleException(e));
            }
        }
    });

    return ref.get();
}

From source file:org.jetbrains.maven.embedder.MavenEmbedder.java

License:Apache License

@Nonnull
public MavenExecutionResult resolveProject(@Nonnull final File file, @Nonnull final List<String> activeProfiles,
        @Nonnull final List<String> inactiveProfiles, List<ResolutionListener> listeners) {
    MavenExecutionRequest request = createRequest(file, activeProfiles, inactiveProfiles,
            Collections.<String>emptyList());
    ProjectBuilderConfiguration config = request.getProjectBuilderConfiguration();

    request.getGlobalProfileManager().loadSettingsProfiles(mySettings);

    ProfileManager globalProfileManager = request.getGlobalProfileManager();
    globalProfileManager.loadSettingsProfiles(request.getSettings());

    List<Exception> exceptions = new ArrayList<Exception>();
    MavenProject project = null;
    try {// w ww.j  a  va  2  s.  c  o  m
        // copied from DefaultMavenProjectBuilder.buildWithDependencies
        MavenProjectBuilder builder = getComponent(MavenProjectBuilder.class);
        project = builder.build(new File(file.getPath()), config);
        builder.calculateConcreteState(project, config, false);

        // copied from DefaultLifecycleExecutor.execute
        findExtensions(project);
        // end copied from DefaultLifecycleExecutor.execute

        Artifact projectArtifact = project.getArtifact();
        Map managedVersions = project.getManagedVersionMap();
        ArtifactMetadataSource metadataSource = getComponent(ArtifactMetadataSource.class);
        project.setDependencyArtifacts(
                project.createArtifacts(getComponent(ArtifactFactory.class), null, null));

        ArtifactResolver resolver = getComponent(ArtifactResolver.class);
        ArtifactResolutionResult result = resolver.resolveTransitively(project.getDependencyArtifacts(),
                projectArtifact, managedVersions, myLocalRepository, project.getRemoteArtifactRepositories(),
                metadataSource, null, listeners);
        project.setArtifacts(result.getArtifacts());
        // end copied from DefaultMavenProjectBuilder.buildWithDependencies
    } catch (Exception e) {
        return handleException(e);
    }

    return new MavenExecutionResult(project, exceptions);
}

From source file:org.nuxeo.build.maven.AntBuildMojo.java

License:Open Source License

@Override
public void resolveDependencyTree(Artifact artifact, ArtifactFilter filter, ResolutionListener listener)
        throws ArtifactResolutionException, ProjectBuildingException {
    MavenProject mavenProject = projectBuilder.buildFromRepository(artifact, remoteRepositories,
            localRepository);//from   ww w.  j ava 2s .c  om
    ArtifactCollector collector = new DefaultArtifactCollector();
    collector.collect(mavenProject.getDependencyArtifacts(), mavenProject.getArtifact(),
            mavenProject.getManagedVersionMap(), localRepository, mavenProject.getRemoteArtifactRepositories(),
            metadataSource, filter, Collections.singletonList(listener));
}

From source file:org.nuxeo.build.maven.EmbeddedMavenClient.java

License:Open Source License

public void resolveDependencyTree(Artifact artifact, ArtifactFilter filter, ResolutionListener listener)
        throws ArtifactResolutionException, ProjectBuildingException {
    MavenProject project = mavenProjectBuilder.buildFromRepository(artifact, getRemoteRepositories(),
            localRepository);/*from  w w  w . j ava2s  .co m*/

    @SuppressWarnings("rawtypes")
    Set dependencyArtifacts = project.getDependencyArtifacts();
    if (dependencyArtifacts == null) {
        try {
            dependencyArtifacts = project.createArtifacts(artifactFactory, null, null);
        } catch (InvalidDependencyVersionException e) {
            throw new ArtifactResolutionException("Cannot set dependencies", artifact, e);
        }
        project.setDependencyArtifacts(dependencyArtifacts);
    }

    ArtifactCollector collector = new DefaultArtifactCollector();
    collector.collect(dependencyArtifacts, project.getArtifact(), project.getManagedVersionMap(),
            localRepository, project.getRemoteArtifactRepositories(), artifactMetadataSource, filter,
            Collections.singletonList(listener));
}

From source file:org.sourcepit.osgifier.maven.context.MavenDependencyWalker.java

License:Apache License

private Set<Artifact> resolve(Request walkerRequest, Artifact artifact, MavenProject resolutionContext,
        boolean resolveRoot, List<Dependency> dependencies) {
    final ArtifactResolutionRequest request = new ArtifactResolutionRequest();
    request.setArtifact(artifact);// w  w w  . j  a  va 2  s. c o m
    request.setResolveRoot(resolveRoot);
    request.setResolveTransitively(!resolveRoot);

    if (dependencies != null) {
        final Set<Artifact> artifactDependencies = new LinkedHashSet<Artifact>();
        for (Dependency dependency : dependencies) {
            artifactDependencies.add(repositorySystem.createArtifactWithClassifier(dependency.getGroupId(),
                    dependency.getArtifactId(), dependency.getVersion(), dependency.getType(),
                    dependency.getClassifier()));
        }
        request.setArtifactDependencies(artifactDependencies);
    }

    request.setLocalRepository(walkerRequest.getLocalRepository());

    final List<ArtifactRepository> remoteRepositories = new ArrayList<ArtifactRepository>();
    final Set<String> repoIds = new HashSet<String>();
    final List<ArtifactRepository> requestRepos = walkerRequest.getRemoteRepositories();
    if (requestRepos != null) {
        for (ArtifactRepository artifactRepository : requestRepos) {
            repoIds.add(artifactRepository.getId());
            remoteRepositories.add(artifactRepository);
        }
    }

    if (resolutionContext != null) {
        for (ArtifactRepository artifactRepository : resolutionContext.getRemoteArtifactRepositories()) {
            if (repoIds.add(artifactRepository.getId())) {
                remoteRepositories.add(artifactRepository);
            }
        }
        request.setManagedVersionMap(resolutionContext.getManagedVersionMap());
    }

    request.setRemoteRepositories(remoteRepositories);

    final ArtifactFilter artifactFilter = walkerRequest.getArtifactFilter();

    request.setCollectionFilter(artifactFilter);
    request.setResolutionFilter(artifactFilter);

    ArtifactResolutionResult result = repositorySystem.resolve(request);

    final Exception ex;
    if (result.hasExceptions()) {
        ex = result.getExceptions().get(0);
    } else if (result.hasCircularDependencyExceptions()) {
        ex = result.getCircularDependencyException(0);
    } else if (result.hasErrorArtifactExceptions()) {
        ex = result.getErrorArtifactExceptions().get(0);
    } else if (result.hasMetadataResolutionExceptions()) {
        ex = result.getMetadataResolutionException(0);
    } else {
        ex = null;
    }
    if (ex != null) {
        throw new IllegalStateException(ex);
    }

    for (Artifact missingArtifact : result.getMissingArtifacts()) {
        throw Exceptions.pipe(new ArtifactNotFoundException("Unable to resolve artifact", missingArtifact));
    }

    return result.getArtifacts();
}

From source file:org.sourcepit.tpmp.LocalizeTargetPlatformMojo.java

License:Apache License

private void download(MavenSession session, MavenProject project, File parentDir) {
    final Artifact platformArtifact = createPlatformArtifact(project);

    final ArtifactResolutionRequest request = new ArtifactResolutionRequest();
    request.setArtifact(platformArtifact);
    request.setResolveRoot(true);/*from  ww w.  j  av  a 2 s  .  c o  m*/
    request.setResolveTransitively(false);
    request.setLocalRepository(session.getLocalRepository());
    request.setRemoteRepositories(project.getRemoteArtifactRepositories());
    request.setManagedVersionMap(project.getManagedVersionMap());
    request.setOffline(session.isOffline());

    repositorySystem.resolve(request);

    if (platformArtifact.getFile().exists()) {
        final ZipProcessingRequest unzipRequest = ZipProcessingRequest
                .newUnzipRequest(platformArtifact.getFile(), parentDir);
        try {
            new ZipProcessor().process(unzipRequest);
        } catch (IOException e) {
            throw Exceptions.pipe(e);
        }
    }
}

From source file:org.sourcepit.tpmp.resolver.tycho.TychoSessionTargetPlatformResolver.java

License:Apache License

private MavenProject setupAggregatedProject(MavenSession session,
        TargetPlatformConfiguration aggregatedConfiguration) {
    PropertiesMap mvnProperties = new LinkedPropertiesMap();
    mvnProperties.load(getClass().getClassLoader(), "META-INF/tpmp/maven.properties");

    String groupId = mvnProperties.get("groupId");
    String artifactId = mvnProperties.get("artifactId");
    String version = mvnProperties.get("version");

    final String tpmpKey = Plugin.constructKey(groupId, artifactId);

    MavenProject origin = session.getCurrentProject();

    Model model = origin.getModel().clone();
    Build build = model.getBuild();/*from  www . j  av  a2  s . c  o  m*/
    if (build.getPluginsAsMap().get(tpmpKey) == null) {
        Plugin tpmp = new Plugin();
        tpmp.setGroupId(groupId);
        tpmp.setArtifactId(artifactId);
        tpmp.setVersion(version);

        build.getPlugins().add(tpmp);
        build.flushPluginMap();
    }

    MavenProject fake = new MavenProject(model);
    fake.setClassRealm(origin.getClassRealm());
    fake.setFile(origin.getFile());

    final Map<String, ArtifactRepository> artifactRepositories = new LinkedHashMap<String, ArtifactRepository>();
    final Map<String, ArtifactRepository> pluginRepositories = new LinkedHashMap<String, ArtifactRepository>();
    for (MavenProject project : session.getProjects()) {
        for (ArtifactRepository repository : project.getRemoteArtifactRepositories()) {
            if (!artifactRepositories.containsKey(repository.getId())) {
                artifactRepositories.put(repository.getId(), repository);
            }
        }
        for (ArtifactRepository repository : project.getPluginArtifactRepositories()) {
            if (!pluginRepositories.containsKey(repository.getId())) {
                pluginRepositories.put(repository.getId(), repository);
            }
        }
    }

    fake.setRemoteArtifactRepositories(new ArrayList<ArtifactRepository>(artifactRepositories.values()));
    fake.setPluginArtifactRepositories(new ArrayList<ArtifactRepository>(pluginRepositories.values()));
    fake.setManagedVersionMap(origin.getManagedVersionMap());

    if (getTychoProject(fake) == null) {
        fake.setPackaging("eclipse-repository");
    }

    fake.getBuildPlugins();

    AbstractTychoProject tychoProject = (AbstractTychoProject) getTychoProject(fake);
    tychoProject.setupProject(session, fake);

    Properties properties = new Properties();
    properties.putAll(fake.getProperties());
    properties.putAll(session.getSystemProperties()); // session wins
    properties.putAll(session.getUserProperties());
    fake.setContextValue(TychoConstants.CTX_MERGED_PROPERTIES, properties);

    fake.setContextValue(TychoConstants.CTX_TARGET_PLATFORM_CONFIGURATION, aggregatedConfiguration);

    ExecutionEnvironmentConfiguration eeConfiguration = new ExecutionEnvironmentConfigurationImpl(logger,
            aggregatedConfiguration.isResolveWithEEConstraints());
    tychoProject.readExecutionEnvironmentConfiguration(fake, eeConfiguration);
    fake.setContextValue(TychoConstants.CTX_EXECUTION_ENVIRONMENT_CONFIGURATION, eeConfiguration);

    final DependencyMetadata dm = new DependencyMetadata();
    for (ReactorProject reactorProject : DefaultReactorProject.adapt(session)) {
        mergeMetadata(dm, reactorProject, true);
        mergeMetadata(dm, reactorProject, false);
    }

    int i = 0;
    for (Object object : dm.getMetadata(true)) {
        InstallableUnitDAO dao = new TychoSourceIUResolver.InstallableUnitDAO(
                object.getClass().getClassLoader());
        dao.setProperty(object, RepositoryLayoutHelper.PROP_CLASSIFIER, "fake_" + i);
        i++;
    }

    for (Object object : dm.getMetadata(false)) {
        InstallableUnitDAO dao = new TychoSourceIUResolver.InstallableUnitDAO(
                object.getClass().getClassLoader());
        dao.setProperty(object, RepositoryLayoutHelper.PROP_CLASSIFIER, "fake_" + i);
        i++;
    }

    Map<String, DependencyMetadata> metadata = new LinkedHashMap<String, DependencyMetadata>();
    metadata.put(null, dm);

    fake.setContextValue("tpmp.aggregatedMetadata", metadata);

    return fake;
}

From source file:org.universAAL.maven.treebuilder.DependencyTreeBuilder.java

License:Apache License

/**
 * Method builds dependency tree for a list of maven projects. All artifacts
 * in the tree are crosschecked against duplications and conflicts. In each
 * case of duplication, conflict, the case is resolved by omitting artifact
 * which is lower in the tree and keeping artifact which is higher in the
 * tree. If artifacts are on the same level then the one occuring first in
 * the tree is kept.//  w w w. j ava  2s . c o m
 * 
 * @param repository
 *            Maven repository.
 * @param factory
 *            Factory used for creating artifacts.
 * @param metadataSource
 *            ArtifactMetadataSource provided by maven.
 * @param projectDescs
 *            list of maven project descriptors. Each descriptor contains
 *            MavenProject, a list of project's remote repositories and a
 *            boolean indicator if the project needs to be resolved
 *            transitively or not.
 * @return a dependency tree as a list of rootnodes (instances of
 *         DependencyNode class) which contain their own subtrees. Each
 *         rootnode corresponds to one maven project provided as argument.
 *         The order of rootnodes list is the same as order of provided
 *         maven projects list.
 * @throws DependencyTreeBuilderException
 *             Notifies about a problem during building the dependency tree.
 * @throws ArtifactMetadataRetrievalException
 *             Signals problem with metadata retieval.
 * @throws InvalidVersionSpecificationException
 *             Informs about invalid version specifications.
 * @throws NoSuchFieldException
 *             Exception related to reflection.
 * @throws SecurityException
 *             Exception thrown by security manager.
 * @throws IllegalAccessException
 *             Illegal access during usage of java reflection.
 * @throws IllegalArgumentException
 *             Illegal argument was passed.
 */
public List<RootNode> buildDependencyTree(final ArtifactRepository repository, final ArtifactFactory factory,
        final ArtifactMetadataSource metadataSource, final MavenProjectDescriptor... projectDescs)
        throws DependencyTreeBuilderException, ArtifactMetadataRetrievalException,
        InvalidVersionSpecificationException, SecurityException, NoSuchFieldException, IllegalArgumentException,
        IllegalAccessException {
    ArtifactFilter filter = new ScopeArtifactFilter();
    DependencyTreeResolutionListener listener = new DependencyTreeResolutionListener(filter);
    Map resolvedArtifacts = new LinkedHashMap();
    for (MavenProjectDescriptor projectDesc : projectDescs) {
        MavenProject project = projectDesc.project;
        try {
            List<String> separatedGroupId = extractSeparatedGroupIds(project);

            // Here you can simply add to create a new list
            List remoteRepositories = projectDesc.remoteRepositories;

            // If artifact is marked in pom as a bundle then it is changed
            // to jar. Retaining bundle can impose problems when the
            // artifact is duplicated or conflicted with other artifact
            // specified as a dependency, because in the
            // dependency there is only jar type specified.
            Artifact originatingArtifact = project.getArtifact();
            this.stringifiedRoot = FilteringVisitorSupport.stringify(originatingArtifact);
            if ("bundle".equals(originatingArtifact.getType())) {
                Artifact changeArtifact = artifactFactory.createArtifact(originatingArtifact.getGroupId(),
                        originatingArtifact.getArtifactId(), originatingArtifact.getVersion(),
                        originatingArtifact.getScope(), "jar");
                originatingArtifact = changeArtifact;
            }
            ResolutionNode root = new ResolutionNode(originatingArtifact, remoteRepositories);

            // If the project is not supposed to be transitively resolved
            // then its dependencies are not added to the root. Moreover the
            // parameter is passed to the recurse method. Thanks to than
            // when transitive is false, resolving of runtime dependencies
            // is not performed.
            if (projectDesc.transitive) {
                Set<Artifact> dependencyArtifacts = project.getDependencyArtifacts();

                if (dependencyArtifacts == null) {
                    dependencyArtifacts = new LinkedHashSet();
                    List dependencies = project.getDependencies();
                    for (Object depObj : dependencies) {
                        Dependency dep = (Dependency) depObj;
                        if (dep.isOptional()) {
                            // filtering optional dependencies
                            continue;
                        }
                        Artifact dependencyArtifact;
                        VersionRange versionRange = VersionRange.createFromVersionSpec(dep.getVersion());
                        dependencyArtifact = factory.createDependencyArtifact(dep.getGroupId(),
                                dep.getArtifactId(), versionRange, dep.getType(), dep.getClassifier(),
                                dep.getScope());
                        if (dep.getExclusions() != null) {
                            if (!dep.getExclusions().isEmpty()) {
                                List<String> patterns = new ArrayList<String>();
                                for (Exclusion exclusion : dep.getExclusions()) {
                                    patterns.add(exclusion.getGroupId() + ":" + exclusion.getArtifactId());
                                }
                                dependencyArtifact.setDependencyFilter(new ExcludesArtifactFilter(patterns));
                            }
                        }
                        dependencyArtifacts.add(dependencyArtifact);
                    }
                } else {
                    // filtering optional dependencies
                    Set<Artifact> filteredArtifacts = new LinkedHashSet();
                    for (Artifact a : dependencyArtifacts) {
                        if (!a.isOptional()) {
                            filteredArtifacts.add(a);
                        }
                    }
                    dependencyArtifacts = filteredArtifacts;
                }

                for (Artifact depArtifact : dependencyArtifacts) {
                    if (depArtifact.getVersion() != null) {
                        if (!depArtifact.getVersion().equals(depArtifact.getBaseVersion())) {
                            if (depArtifact.isSnapshot()) {
                                depArtifact.setVersion(depArtifact.getBaseVersion());
                            }
                        }
                    }
                }

                root.addDependencies(dependencyArtifacts, remoteRepositories, filter);
            }

            // Information about managed versions is extracted from the
            // artifact's pom (but also from parent poms and settings.xml
            // file).
            ManagedVersionMap versionMap = getManagedVersionsMap(originatingArtifact,
                    project.getManagedVersionMap());

            recurse(originatingArtifact, root, resolvedArtifacts, versionMap, localRepository,
                    remoteRepositories, metadataSource, filter, listener, projectDesc.transitive,
                    new HashSet<String>(separatedGroupId));
        } catch (ArtifactResolutionException exception) {
            throw new DependencyTreeBuilderException("Cannot build project dependency tree", exception);
        }
    }
    return listener.getRootNodes();
}