Author: jdcasey
Date: Wed Jun  8 16:34:35 2005
New Revision: 189667

URL: http://svn.apache.org/viewcvs?rev=189667&view=rev
Log:
Resolving: MNG-421

o External profiles (from settings.xml, profiles.xml) are now available before 
the main MavenProject is constructed, which allows repositories defined in 
external profiles to be used to resolve project parents and dependencies.

NOTE: I need to double-check whether the profile-defined repos are actually 
used to resolve the parent project(s)...there may be another commit following 
on the heels of this one.


Removed:
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ExternalProfileInjector.java
Modified:
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/model/ModelNormalizationUtils.java
    
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
    maven/components/trunk/maven-model/maven.mdo
    maven/components/trunk/maven-model/pom.xml
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java
    
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/MavenProjectTestCase.java

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=189667&r1=189666&r2=189667&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 Wed Jun  8 16:34:35 2005
@@ -32,7 +32,6 @@
 import org.apache.maven.profile.AlwaysOnActivation;
 import org.apache.maven.profiles.MavenProfilesBuilder;
 import org.apache.maven.profiles.ProfilesRoot;
-import org.apache.maven.project.ExternalProfileInjector;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
@@ -84,8 +83,6 @@
     
     protected MavenProfilesBuilder profilesBuilder;
     
-    protected ExternalProfileInjector externalProfileInjector;
-
     // ----------------------------------------------------------------------
     // Project execution
     // ----------------------------------------------------------------------
@@ -122,7 +119,9 @@
 
             if ( projects.isEmpty() )
             {
-                projects.add( projectBuilder.buildStandaloneSuperProject( 
request.getLocalRepository() ) );
+                List externalProfiles = getActiveExternalProfiles( null, 
request.getSettings() );
+                
+                projects.add( projectBuilder.buildStandaloneSuperProject( 
request.getLocalRepository(), externalProfiles ) );
             }
         }
         catch ( IOException e )
@@ -314,15 +313,22 @@
             }
         }
 
-        MavenProject project = projectBuilder.build( pom, localRepository );
+        List externalProfiles = getActiveExternalProfiles( pom, settings );
         
+        MavenProject project = projectBuilder.build( pom, localRepository, 
externalProfiles );
+        
+        return project;
+    }
+
+    private List getActiveExternalProfiles( File pom, Settings settings ) 
throws ProjectBuildingException
+    {
         // TODO: apply profiles.xml and settings.xml Profiles here.
+        List externalProfiles = new ArrayList();
+        
         List settingsProfiles = settings.getProfiles();
         
         if(settingsProfiles != null && !settingsProfiles.isEmpty())
         {
-            List profiles = new ArrayList();
-            
             List settingsActiveProfileIds = settings.getActiveProfiles();
             
             for ( Iterator it = settings.getProfiles().iterator(); 
it.hasNext(); )
@@ -336,40 +342,37 @@
                     profile.setActivation( new AlwaysOnActivation() );
                 }
                 
-                profiles.add( profile );
+                externalProfiles.add( profile );
             }
-            
-            externalProfileInjector.injectExternalProfiles( project, profiles 
);
         }
         
-        try
+        if( pom != null )
         {
-            ProfilesRoot root = profilesBuilder.buildProfiles( 
pom.getParentFile() );
-            
-            if( root != null )
+            try
             {
-                List profiles = new ArrayList();
+                ProfilesRoot root = profilesBuilder.buildProfiles( 
pom.getParentFile() );
                 
-                for ( Iterator it = root.getProfiles().iterator(); 
it.hasNext(); )
+                if( root != null )
                 {
-                    org.apache.maven.profiles.Profile rawProfile = 
(org.apache.maven.profiles.Profile) it.next();
-                    
-                    profiles.add( 
ModelNormalizationUtils.convertFromProfileXmlProfile( rawProfile ) );
+                    for ( Iterator it = root.getProfiles().iterator(); 
it.hasNext(); )
+                    {
+                        org.apache.maven.profiles.Profile rawProfile = 
(org.apache.maven.profiles.Profile) it.next();
+                        
+                        externalProfiles.add( 
ModelNormalizationUtils.convertFromProfileXmlProfile( rawProfile ) );
+                    }
                 }
-                
-                externalProfileInjector.injectExternalProfiles( project, 
profiles );
             }
-        }
-        catch ( IOException e )
-        {
-            throw new ProjectBuildingException( "Cannot read profiles.xml 
resource for pom: " + pom, e );
-        }
-        catch ( XmlPullParserException e )
-        {
-            throw new ProjectBuildingException( "Cannot parse profiles.xml 
resource for pom: " + pom, e );
+            catch ( IOException e )
+            {
+                throw new ProjectBuildingException( "Cannot read profiles.xml 
resource for pom: " + pom, e );
+            }
+            catch ( XmlPullParserException e )
+            {
+                throw new ProjectBuildingException( "Cannot parse profiles.xml 
resource for pom: " + pom, e );
+            }
         }
         
-        return project;
+        return externalProfiles;
     }
 
     // ----------------------------------------------------------------------

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/model/ModelNormalizationUtils.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/model/ModelNormalizationUtils.java?rev=189667&r1=189666&r2=189667&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/model/ModelNormalizationUtils.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/model/ModelNormalizationUtils.java
 Wed Jun  8 16:34:35 2005
@@ -59,7 +59,7 @@
             }
         }
 
-        profile.setProperties( settingsProfile.getProperties() );
+        profile.addEvalProperties( settingsProfile.getProperties() );
 
         List repos = settingsProfile.getRepositories();
         if ( repos != null )
@@ -117,7 +117,7 @@
             profile.setActivation( new AlwaysOnActivation() );
         }
         
-        profile.setProperties( profileXmlProfile.getProperties() );
+        profile.addEvalProperties( profileXmlProfile.getProperties() );
 
         List repos = profileXmlProfile.getRepositories();
         if ( repos != null )

Modified: 
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=189667&r1=189666&r2=189667&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
 (original)
+++ 
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
 Wed Jun  8 16:34:35 2005
@@ -22,9 +22,6 @@
         <requirement>
           <role>org.apache.maven.profiles.MavenProfilesBuilder</role>
         </requirement>
-        <requirement>
-          <role>org.apache.maven.project.ExternalProfileInjector</role>
-        </requirement>
       </requirements>
     </component>
     <!--
@@ -35,23 +32,6 @@
     <component>
       <role>org.apache.maven.profiles.MavenProfilesBuilder</role>
       
<implementation>org.apache.maven.profiles.DefaultMavenProfilesBuilder</implementation>
-    </component>
-    <!--
-     |
-     |
-     |
-     -->
-    <component>
-      <role>org.apache.maven.project.ExternalProfileInjector</role>
-      
<implementation>org.apache.maven.project.ExternalProfileInjector</implementation>
-      <requirements>
-        <requirement>
-          
<role>org.apache.maven.artifact.repository.ArtifactRepositoryFactory</role>
-        </requirement>
-        <requirement>
-          
<role>org.apache.maven.profile.activation.ProfileActivationCalculator</role>
-        </requirement>
-      </requirements>
     </component>
     <!--
      |

Modified: maven/components/trunk/maven-model/maven.mdo
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-model/maven.mdo?rev=189667&r1=189666&r2=189667&view=diff
==============================================================================
--- maven/components/trunk/maven-model/maven.mdo (original)
+++ maven/components/trunk/maven-model/maven.mdo Wed Jun  8 16:34:35 2005
@@ -664,6 +664,24 @@
           </association>
         </field>
       </fields>
+      <codeSegments>
+        <codeSegment>
+          <version>4.0.0</version>
+          <code><![CDATA[
+    private Properties evalProperties = new Properties();
+    
+    public void addEvalProperties( Properties properties )
+    {
+        this.evalProperties.putAll( properties );
+    }
+    
+    public Properties getEvalProperties()
+    {
+        return evalProperties;
+    }
+          ]]></code>
+        </codeSegment>
+      </codeSegments>
     </class>
     <!-- @todo: is any of this too CVS specific? Investigate other SCMs -->
     <class>
@@ -2308,18 +2326,6 @@
           <version>4.0.0</version>
           <code><![CDATA[
     // We don't want this to be parseable...it's sort of 'hidden'
-    private Properties properties;
-    
-    public void setProperties( Properties properties )
-    {
-        this.properties = properties;
-    }
-    
-    public Properties getProperties()
-    {
-        return properties;
-    }
-    
     // default source for this profile is in the pom itself.
     private String source = "pom";
     

Modified: maven/components/trunk/maven-model/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-model/pom.xml?rev=189667&r1=189666&r2=189667&view=diff
==============================================================================
--- maven/components/trunk/maven-model/pom.xml (original)
+++ maven/components/trunk/maven-model/pom.xml Wed Jun  8 16:34:35 2005
@@ -20,8 +20,7 @@
       <plugin>
         <groupId>org.codehaus.modello</groupId>
         <artifactId>modello-maven-plugin</artifactId>
-        <version>1.0-alpha-2</version>
-        <!-- version>1.0-alpha-3-SNAPSHOT</version -->
+        <version>1.0-alpha-3-SNAPSHOT</version>
         <configuration>
           <version>4.0.0</version>
           <model>maven.mdo</model>

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=189667&r1=189666&r2=189667&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 Wed Jun  8 16:34:35 2005
@@ -58,6 +58,8 @@
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -112,10 +114,10 @@
     // ----------------------------------------------------------------------
 
     public MavenProject buildWithDependencies( File projectDescriptor, 
ArtifactRepository localRepository,
-                                               ArtifactMetadataSource 
artifactMetadataSource )
+                                               ArtifactMetadataSource 
artifactMetadataSource, List externalProfiles )
         throws ProjectBuildingException, ArtifactResolutionException
     {
-        MavenProject project = buildFromSourceFile( projectDescriptor, 
localRepository );
+        MavenProject project = buildFromSourceFile( projectDescriptor, 
localRepository, externalProfiles );
 
         // 
----------------------------------------------------------------------
         // Typically when the project builder is being used from maven proper
@@ -138,13 +140,13 @@
         return project;
     }
 
-    public MavenProject build( File projectDescriptor, ArtifactRepository 
localRepository )
+    public MavenProject build( File projectDescriptor, ArtifactRepository 
localRepository, List externalProfiles )
         throws ProjectBuildingException, ArtifactResolutionException
     {
-        return buildFromSourceFile( projectDescriptor, localRepository );
+        return buildFromSourceFile( projectDescriptor, localRepository, 
externalProfiles );
     }
 
-    private MavenProject buildFromSourceFile( File projectDescriptor, 
ArtifactRepository localRepository )
+    private MavenProject buildFromSourceFile( File projectDescriptor, 
ArtifactRepository localRepository, List externalProfiles )
         throws ProjectBuildingException, ArtifactResolutionException
     {
         Model model = readModel( projectDescriptor );
@@ -152,7 +154,7 @@
         // Always cache files in the source tree over those in the repository
         modelCache.put( createCacheKey( model.getGroupId(), 
model.getArtifactId(), model.getVersion() ), model );
 
-        MavenProject project = build( projectDescriptor.getAbsolutePath(), 
model, localRepository );
+        MavenProject project = build( projectDescriptor.getAbsolutePath(), 
model, localRepository, externalProfiles );
 
         // Only translate the base directory for files in the source tree
         pathTranslator.alignToBaseDirectory( project.getModel(), 
projectDescriptor );
@@ -174,7 +176,7 @@
     {
         Model model = findModelFromRepository( artifact, 
remoteArtifactRepositories, localRepository );
 
-        return build( "Artifact [" + artifact.getId() + "]", model, 
localRepository );
+        return build( "Artifact [" + artifact.getId() + "]", model, 
localRepository, Collections.EMPTY_LIST );
     }
 
     private Model findModelFromRepository( Artifact artifact, List 
remoteArtifactRepositories,
@@ -212,7 +214,7 @@
         return model;
     }
 
-    private MavenProject build( String pomLocation, Model model, 
ArtifactRepository localRepository )
+    private MavenProject build( String pomLocation, Model model, 
ArtifactRepository localRepository, List externalProfiles )
         throws ProjectBuildingException, ArtifactResolutionException
     {
         Model superModel = getSuperModel();
@@ -236,7 +238,7 @@
 
         try
         {
-            project = processProjectLogic( pomLocation, project, 
aggregatedRemoteWagonRepositories );
+            project = processProjectLogic( pomLocation, project, 
aggregatedRemoteWagonRepositories, externalProfiles );
         }
         catch ( ModelInterpolationException e )
         {
@@ -252,7 +254,7 @@
      * the resolved source roots, etc for the parent - that occurs for the 
parent when it is constructed independently
      * and projects are not cached or reused
      */
-    private MavenProject processProjectLogic( String pomLocation, MavenProject 
project, List remoteRepositories )
+    private MavenProject processProjectLogic( String pomLocation, MavenProject 
project, List remoteRepositories, List externalProfiles )
         throws ProjectBuildingException, ModelInterpolationException
     {
         Model model = project.getModel();
@@ -264,8 +266,13 @@
         }
         
         // TODO: Add profiles support here?
+        List activeProfiles = new ArrayList( externalProfiles );
+        
         List activePomProfiles = 
profileActivationCalculator.calculateActiveProfiles( model.getProfiles() );
-        for ( Iterator it = activePomProfiles.iterator(); it.hasNext(); )
+        
+        activeProfiles.addAll( activePomProfiles );
+        
+        for ( Iterator it = activeProfiles.iterator(); it.hasNext(); )
         {
             Profile profile = (Profile) it.next();
             
@@ -466,7 +473,7 @@
         return pluginArtifacts;
     }
 
-    public MavenProject buildStandaloneSuperProject( ArtifactRepository 
localRepository )
+    public MavenProject buildStandaloneSuperProject( ArtifactRepository 
localRepository, List externalProfiles )
         throws ProjectBuildingException
     {
         Model superModel = getSuperModel();
@@ -485,7 +492,7 @@
 
             List remoteRepositories = ProjectUtils.buildArtifactRepositories( 
superModel.getRepositories(), artifactRepositoryFactory, container );
 
-            project = processProjectLogic( "<Super-POM>", project, 
remoteRepositories );
+            project = processProjectLogic( "<Super-POM>", project, 
remoteRepositories, externalProfiles );
 
             return project;
         }

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java?rev=189667&r1=189666&r2=189667&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
 Wed Jun  8 16:34:35 2005
@@ -34,11 +34,11 @@
 
     static final String STANDALONE_SUPERPOM_VERSION = "2.0";
 
-    MavenProject build( File project, ArtifactRepository localRepository )
+    MavenProject build( File project, ArtifactRepository localRepository, List 
profiles )
         throws ProjectBuildingException, ArtifactResolutionException;
 
     MavenProject buildWithDependencies( File project, ArtifactRepository 
localRepository,
-                                        ArtifactMetadataSource 
artifactMetadataSource )
+                                        ArtifactMetadataSource 
artifactMetadataSource, List externalProfiles )
         throws ProjectBuildingException, ArtifactResolutionException;
 
     /**
@@ -54,6 +54,6 @@
                                       ArtifactRepository localRepository )
         throws ProjectBuildingException, ArtifactResolutionException;
 
-    MavenProject buildStandaloneSuperProject( ArtifactRepository 
localRepository )
+    MavenProject buildStandaloneSuperProject( ArtifactRepository 
localRepository, List externalProfiles )
         throws ProjectBuildingException;
 }

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java?rev=189667&r1=189666&r2=189667&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java
 Wed Jun  8 16:34:35 2005
@@ -152,11 +152,7 @@
     {
         assembleModelBaseInheritance( model, profile );
 
-        Build modelBuild = model.getBuild();
-
-        BuildBase profileBuild = profile.getBuild();
-
-        assembleBuildBaseInheritance( modelBuild, profileBuild );
+        assembleBuildBaseInheritance( model.getBuild(), profile.getBuild() );
     }
 
     private void assembleModelBaseInheritance( ModelBase child, ModelBase 
parent )
@@ -225,6 +221,9 @@
         }
 
         assembleDependencyManagementInheritance( child, parent );
+        
+        // Evaluation Properties :: aggregate
+        child.addEvalProperties( parent.getEvalProperties() );
     }
 
     private void assembleDependencyManagementInheritance( ModelBase child, 
ModelBase parent )

Modified: 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/MavenProjectTestCase.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/MavenProjectTestCase.java?rev=189667&r1=189666&r2=189667&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/MavenProjectTestCase.java
 (original)
+++ 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/MavenProjectTestCase.java
 Wed Jun  8 16:34:35 2005
@@ -23,6 +23,7 @@
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.net.URL;
+import java.util.Collections;
 
 /**
  * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl </a>
@@ -93,13 +94,14 @@
         throws Exception
     {
         return projectBuilder.buildWithDependencies( pom, getLocalRepository(),
-                                                     new 
ProjectClasspathArtifactResolver.Source() );
+                                                     new 
ProjectClasspathArtifactResolver.Source(),
+                                                     Collections.EMPTY_LIST );
     }
 
     protected MavenProject getProject( File pom )
         throws Exception
     {
-        return projectBuilder.build( pom, getLocalRepository() );
+        return projectBuilder.build( pom, getLocalRepository(), 
Collections.EMPTY_LIST );
     }
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to