You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jd...@apache.org on 2005/06/09 01:34:36 UTC

svn commit: r189667 - /maven/components/trunk/maven-core/src/main/java/org/apache/maven /maven/components/trunk/maven-core/src/main/java/org/apache/maven/model /maven/components/trunk/maven-core/src/main/java/org/apache/maven/project /maven/components/trunk/maven-core/src/main/resources/META-INF/plexus /maven/components/trunk/maven-model /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance /maven/components/trunk/maven-project/src/test/java/org/apache/maven/project

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:jason@maven.org">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: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org