private void mergeManagedDependencies()

in maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java [1437:1496]


    private void mergeManagedDependencies( Model model, ProjectBuilderConfiguration config, List parentSearchRepositories )
        throws ProjectBuildingException
    {
        DependencyManagement modelDepMgmt = model.getDependencyManagement();

        if ( modelDepMgmt != null )
        {
            Map depsMap = new TreeMap();
            Iterator iter = modelDepMgmt.getDependencies().iterator();
            boolean doInclude = false;
            while ( iter.hasNext() )
            {
                Dependency dep = (Dependency) iter.next();
                depsMap.put( dep.getManagementKey(), dep );
                if ( dep.getType().equals( "pom" ) && Artifact.SCOPE_IMPORT.equals( dep.getScope() ) )
                {
                    doInclude = true;
                }
            }
            Map newDeps = new TreeMap( depsMap );
            iter = modelDepMgmt.getDependencies().iterator();
            if ( doInclude )
            {
                while ( iter.hasNext() )
                {
                    Dependency dep = (Dependency) iter.next();
                    if ( dep.getType().equals( "pom" )
                         && Artifact.SCOPE_IMPORT.equals( dep.getScope() ) )
                    {
                        Artifact artifact = artifactFactory.createProjectArtifact( dep.getGroupId(), dep.getArtifactId(),
                                                                                  dep.getVersion(), dep.getScope() );
                        MavenProject project = buildFromRepository( artifact, parentSearchRepositories, config, false );

                        DependencyManagement depMgmt = project.getDependencyManagement();

                        if ( depMgmt != null )
                        {
                            if ( getLogger().isDebugEnabled() )
                            {
                                getLogger().debug( "Importing managed dependencies for " + dep.toString() );
                            }

                            for ( Iterator it = depMgmt.getDependencies().iterator(); it.hasNext(); )
                            {
                                Dependency includedDep = (Dependency) it.next();
                                String key = includedDep.getManagementKey();
                                if ( !newDeps.containsKey( key ) )
                                {
                                    newDeps.put( includedDep.getManagementKey(), includedDep );
                                }
                            }
                            newDeps.remove( dep.getManagementKey() );
                        }
                    }
                }
                List deps = new ArrayList( newDeps.values() );
                modelDepMgmt.setDependencies( deps );
            }
        }
    }