private void calculateConcreteStateInternal()

in maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java [1835:1926]


    private void calculateConcreteStateInternal( MavenProject project, ProjectBuilderConfiguration config, boolean processProjectReferences, Set processedProjects )
        throws ModelInterpolationException
    {
        if ( processProjectReferences )
        {
            processedProjects.add( project.getId() );
        }

        restoreDynamicStateInternal( project, config, processProjectReferences, processProjectReferences ? new HashSet( processedProjects ) : null );

        if ( !project.isConcrete() )
        {
            if ( project.getParent() != null )
            {
                calculateConcreteStateInternal( project.getParent(), config, processProjectReferences, processedProjects );
            }

            Build build = project.getBuild();
            if ( build != null )
            {
                initResourceMergeIds( build.getResources() );
                initResourceMergeIds( build.getTestResources() );
            }

            // NOTE: Since interpolation makes a copy through serialization, we don't need this.
            // See note below.
            //
            // Model model = ModelUtils.cloneModel( project.getModel() );

            File basedir = project.getBasedir();

            // NOTE: If we ever get past serialization/deserialization for interpolation, we'll need to copy the model here!
            Model model = ModelUtils.cloneModel( project.getModel() );
            model = modelInterpolator.interpolate( model, project.getBasedir(), config, getLogger().isDebugEnabled() );

            List originalInterpolatedCompileSourceRoots = interpolateListOfStrings( project.getCompileSourceRoots(),
                                                                               model,
                                                                               project.getBasedir(),
                                                                               config,
                                                                               getLogger().isDebugEnabled() );

            project.preserveCompileSourceRoots( originalInterpolatedCompileSourceRoots );

            project.setCompileSourceRoots( originalInterpolatedCompileSourceRoots == null ? null
                            : translateListOfPaths( originalInterpolatedCompileSourceRoots, basedir ) );

            List originalInterpolatedTestCompileSourceRoots = interpolateListOfStrings( project.getTestCompileSourceRoots(),
                                                                                   model,
                                                                                   project.getBasedir(),
                                                                                   config,
                                                                                   getLogger().isDebugEnabled() );

            project.preserveTestCompileSourceRoots( originalInterpolatedTestCompileSourceRoots );
            project.setTestCompileSourceRoots( originalInterpolatedTestCompileSourceRoots == null ? null
                            : translateListOfPaths( originalInterpolatedTestCompileSourceRoots, basedir ) );

            List originalInterpolatedScriptSourceRoots = interpolateListOfStrings( project.getScriptSourceRoots(),
                                                                              model,
                                                                              project.getBasedir(),
                                                                              config,
                                                                              getLogger().isDebugEnabled() );

            project.preserveScriptSourceRoots( originalInterpolatedScriptSourceRoots );

            // TODO: MNG-3731
            project.setScriptSourceRoots( originalInterpolatedScriptSourceRoots );
//            project.setScriptSourceRoots( originalInterpolatedScriptSourceRoots == null ? null
//                            : translateListOfPaths( originalInterpolatedScriptSourceRoots, basedir ) );

            if ( basedir != null )
            {
                pathTranslator.alignToBaseDirectory( model, basedir );
            }

            project.preserveBuild( ModelUtils.cloneBuild( model.getBuild() ) );
            project.preserveProperties();
            project.preserveBasedir();
            project.setBuild( model.getBuild() );

            if ( project.getExecutionProject() != null )
            {
                calculateConcreteStateInternal( project.getExecutionProject(), config, processProjectReferences, processedProjects );
            }

            project.setConcrete( true );
        }

        if ( processProjectReferences )
        {
            calculateConcreteProjectReferences( project, config, processedProjects );
        }
    }