You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2008/09/17 15:52:48 UTC

svn commit: r696299 - in /maven/components/trunk: maven-core/src/main/java/org/apache/maven/extension/ maven-core/src/main/java/org/apache/maven/plugin/ maven-project/src/main/java/org/apache/maven/profiles/ maven-project/src/main/java/org/apache/maven...

Author: sisbell
Date: Wed Sep 17 06:52:46 2008
New Revision: 696299

URL: http://svn.apache.org/viewvc?rev=696299&view=rev
Log:
Some fixes for adding properties from active profiles to the interpolation list.

Modified:
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/DefaultProfileInjector.java
    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/builder/ArtifactModelContainerFactory.java

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java?rev=696299&r1=696298&r2=696299&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java Wed Sep 17 06:52:46 2008
@@ -29,6 +29,7 @@
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.PluginManagement;
 import org.apache.maven.profiles.ProfileManager;
+import org.apache.maven.profiles.Profile;
 import org.apache.maven.profiles.activation.DefaultProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationContext;
 import org.apache.maven.project.MavenProject;
@@ -146,23 +147,24 @@
                     execProps.putAll( config.getExecutionProperties() );
                 }
 
-                if ( inheritedInterpolationValues != null )
-                {
-                    execProps.putAll( inheritedInterpolationValues );
-                }
-                else
-                {
-                    inheritedInterpolationValues = new HashMap();
-                }
+                execProps.putAll( inheritedInterpolationValues );
 
                 config.setExecutionProperties( execProps );
 
-                //INTERPOLATION
+                //INTERPOLATION                
                 List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>();
-                    interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( config.getExecutionProperties(), 
-                PomInterpolatorTag.SYSTEM_PROPERTIES.name()));
-                    interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( config.getUserProperties(),
-                PomInterpolatorTag.USER_PROPERTIES.name()));
+                /*
+                for(Profile profile : (List<Profile>) request.getActiveProfiles())
+                {
+                    interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( profile.getProperties(),
+                        PomInterpolatorTag.SYSTEM_PROPERTIES.name()));
+                }
+                */
+                interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( config.getExecutionProperties(),
+                    PomInterpolatorTag.SYSTEM_PROPERTIES.name()));
+
+                interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( config.getUserProperties(),
+                    PomInterpolatorTag.USER_PROPERTIES.name()));
                 if(config.getBuildStartTime() != null)
                 {
                     interpolatorProperties.add(new InterpolatorProperty("${build.timestamp}",

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=696299&r1=696298&r2=696299&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Wed Sep 17 06:52:46 2008
@@ -20,6 +20,7 @@
  */
 
 import org.apache.maven.ArtifactFilterManager;
+import org.apache.maven.profiles.Profile;
 import org.apache.maven.path.PathTranslator;
 import org.apache.maven.shared.model.InterpolatorProperty;
 import org.apache.maven.artifact.Artifact;
@@ -557,8 +558,15 @@
         if ( dom != null )
         {
             try
-            {  
+            {
                 List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>();
+                /*
+                for(Profile profile : (List<Profile>) project.getActiveProfiles())
+                {
+                    interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( profile.getProperties(),
+                        PomInterpolatorTag.SYSTEM_PROPERTIES.name()));
+                }
+                */
                 interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( session.getProjectBuilderConfiguration().getExecutionProperties(),
                         PomInterpolatorTag.SYSTEM_PROPERTIES.name()));
                 interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( session.getProjectBuilderConfiguration().getUserProperties(),

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java?rev=696299&r1=696298&r2=696299&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java Wed Sep 17 06:52:46 2008
@@ -341,19 +341,6 @@
         return profileActivationContext.getActiveByDefaultProfileIds();
     }
 
-    private static String getVersion( Model model )
-    {
-        Parent parent = model.getParent();
-
-        String version = model.getVersion();
-        if ( ( parent != null ) && ( version == null ) )
-        {
-            version = parent.getVersion();
-        }
-
-        return version;
-    }
-
     public static String getGroupId( Model model )
     {
         Parent parent = model.getParent();

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/DefaultProfileInjector.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/DefaultProfileInjector.java?rev=696299&r1=696298&r2=696299&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/DefaultProfileInjector.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/DefaultProfileInjector.java Wed Sep 17 06:52:46 2008
@@ -70,8 +70,7 @@
         injectBuild( profile, model );
 
         Properties props = new Properties();
-        props.putAll( model.getProperties() );
-        props.putAll( profile.getProperties() );
+
 
         model.setProperties( props );
     }

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=696299&r1=696298&r2=696299&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 Sep 17 06:52:46 2008
@@ -42,10 +42,7 @@
 import org.apache.maven.profiles.activation.ProfileActivationException;
 import org.apache.maven.profiles.build.ProfileAdvisor;
 import org.apache.maven.project.artifact.InvalidDependencyVersionException;
-import org.apache.maven.project.builder.PomArtifactResolver;
-import org.apache.maven.project.builder.ProjectBuilder;
-import org.apache.maven.project.builder.PomInterpolatorTag;
-import org.apache.maven.project.builder.PomClassicTransformer;
+import org.apache.maven.project.builder.*;
 import org.apache.maven.project.validation.ModelValidationResult;
 import org.apache.maven.project.validation.ModelValidator;
 import org.apache.maven.project.workspace.ProjectWorkspace;
@@ -136,12 +133,30 @@
 
         if ( project == null )
         {
+            List<Profile> activeProfiles;
+            try
+            {
+                activeProfiles = getActiveProfilesFromModel(new PomClassicDomainModel(
+                        new FileInputStream( projectDescriptor )).getModel(), config, projectDescriptor, true);
+            } catch (IOException e)
+            {
+                throw new ProjectBuildingException("", e.getMessage());
+            }
+
+            Properties activeProfileProperties = new Properties();
+            for(Profile profile : activeProfiles)
+            {
+                activeProfileProperties.putAll(profile.getProperties());
+            }
+
             project = readModelFromLocalPath( "unknown", projectDescriptor, new PomArtifactResolver(
                 config.getLocalRepository(), repositoryHelper.buildArtifactRepositories(
-                getSuperProject( config, projectDescriptor, true ).getModel() ), artifactResolver ), config );
+                getSuperProject( config, projectDescriptor, true ).getModel() ), artifactResolver ), config,
+                    activeProfileProperties );
 
             project.setFile( projectDescriptor );
-            project = buildInternal( project.getModel(), config, projectDescriptor, project.getParentFile(), true );
+
+            project = buildMavenProject( project.getModel(), config, projectDescriptor, project.getParentFile(), activeProfiles);
 
             Build build = project.getBuild();
             // NOTE: setting this script-source root before path translation, because
@@ -195,9 +210,27 @@
             artifactRepositories.addAll( repositoryHelper.buildArtifactRepositories(
                 getSuperProject( config, artifact.getFile(), false ).getModel() ) );
 
+
+            List<Profile> activeProfiles;
+            try
+            {
+                activeProfiles = this.getActiveProfilesFromModel(new PomClassicDomainModel( 
+                        new FileInputStream( artifact.getFile())).getModel(), config, artifact.getFile(), true);
+            } catch (IOException e)
+            {
+                throw new ProjectBuildingException("", e.getMessage());
+            }
+
+            Properties activeProfileProperties = new Properties();
+            for(Profile profile : activeProfiles)
+            {
+                activeProfileProperties.putAll(profile.getProperties());
+            }
+
             project = readModelFromLocalPath( "unknown", artifact.getFile(), new PomArtifactResolver(
-                config.getLocalRepository(), artifactRepositories, artifactResolver ), config );
-            project = buildInternal( project.getModel(), config, artifact.getFile(), project.getParentFile(), false );
+                config.getLocalRepository(), artifactRepositories, artifactResolver ), config, activeProfileProperties );
+            project = buildMavenProject( project.getModel(), config, artifact.getFile(), project.getParentFile(),
+                    activeProfiles);
         }
 
         artifact.setFile( f );
@@ -396,9 +429,9 @@
         return logger;
     }
 
-    private MavenProject buildInternal( Model model, ProjectBuilderConfiguration config, File projectDescriptor,
-                                        File parentDescriptor, boolean isReactorProject )
-        throws ProjectBuildingException
+    private List<Profile> getActiveProfilesFromModel(Model model, ProjectBuilderConfiguration config,
+                                                     File projectDescriptor, boolean isReactorProject)
+                    throws ProjectBuildingException
     {
         String projectId = safeVersionlessKey( model.getGroupId(), model.getArtifactId() );
 
@@ -423,6 +456,21 @@
             profileActivationContext = new DefaultProfileActivationContext( config.getExecutionProperties(), false );
         }
 
+
+        List<Profile> projectProfiles = new ArrayList<Profile>();
+        projectProfiles.addAll( profileAdvisor.applyActivatedProfiles( model, projectDescriptor,
+                                                                       isReactorProject, profileActivationContext ) );
+        projectProfiles.addAll( profileAdvisor.applyActivatedExternalProfiles( model, projectDescriptor,
+                                                                               externalProfileManager ) );
+        return projectProfiles;
+    }
+
+    private MavenProject buildMavenProject( Model model, ProjectBuilderConfiguration config, File projectDescriptor,
+                                        File parentDescriptor, List<Profile> projectProfiles )
+        throws ProjectBuildingException
+    {
+        String projectId = safeVersionlessKey( model.getGroupId(), model.getArtifactId() );
+
         MavenProject project;
         try
         {
@@ -433,11 +481,6 @@
             throw new InvalidProjectModelException( projectId, e.getMessage(), projectDescriptor, e );
         }
 
-        List<Profile> projectProfiles = new ArrayList<Profile>();
-        projectProfiles.addAll( profileAdvisor.applyActivatedProfiles( project.getModel(), project.getFile(),
-                                                                       isReactorProject, profileActivationContext ) );
-        projectProfiles.addAll( profileAdvisor.applyActivatedExternalProfiles( project.getModel(), project.getFile(),
-                                                                               externalProfileManager ) );
         project.setActiveProfiles( projectProfiles );
 
         projectWorkspace.storeProjectByCoordinate( project );
@@ -479,35 +522,7 @@
                                                 "Maven super-POM contains an invalid repository!", e );
         }
 
-        String projectId = safeVersionlessKey( model.getGroupId(), model.getArtifactId() );
-
-        ProfileActivationContext profileActivationContext;
-        ProfileManager externalProfileManager = config.getGlobalProfileManager();
-        if ( externalProfileManager != null )
-        {
-            // used to trigger the caching of SystemProperties in the container context...
-            try
-            {
-                externalProfileManager.getActiveProfiles();
-            }
-            catch ( ProfileActivationException e )
-            {
-                throw new ProjectBuildingException( projectId, "Failed to activate external profiles.",
-                                                    projectDescriptor, e );
-            }
-            profileActivationContext = externalProfileManager.getProfileActivationContext();
-        }
-        else
-        {
-            profileActivationContext = new DefaultProfileActivationContext( config.getExecutionProperties(), false );
-        }
-
-        List<Profile> superProjectProfiles = new ArrayList<Profile>();
-        superProjectProfiles.addAll( profileAdvisor.applyActivatedProfiles( model, projectDescriptor, isReactorProject,
-                                                                            profileActivationContext ) );
-        superProjectProfiles.addAll(
-            profileAdvisor.applyActivatedExternalProfiles( model, projectDescriptor, externalProfileManager ) );
-        superProject.setActiveProfiles( superProjectProfiles );
+        superProject.setActiveProfiles( getActiveProfilesFromModel(model, config, projectDescriptor, isReactorProject) );
 
         return superProject;
     }
@@ -559,7 +574,7 @@
     }
 
     private MavenProject readModelFromLocalPath( String projectId, File projectDescriptor, PomArtifactResolver resolver,
-                                                 ProjectBuilderConfiguration config )
+                                                 ProjectBuilderConfiguration config, Properties profileProperties )
         throws ProjectBuildingException
     {
         if ( projectDescriptor == null )
@@ -577,6 +592,11 @@
                 PomInterpolatorTag.SYSTEM_PROPERTIES.name()));
         interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( config.getUserProperties(),
                 PomInterpolatorTag.USER_PROPERTIES.name()));
+        if(profileProperties != null)
+        {
+            interpolatorProperties.addAll(InterpolatorProperty.toInterpolatorProperties( profileProperties,
+                    PomInterpolatorTag.SYSTEM_PROPERTIES.name()));
+        }
 
         if(config.getBuildStartTime() != null)
         {
@@ -597,7 +617,7 @@
         {
             throw new ProjectBuildingException( projectId, "File = " + projectDescriptor.getAbsolutePath(), e );
         }
-
+        mavenProject.getProperties().putAll(profileProperties);
         return mavenProject;
 
     }

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/ArtifactModelContainerFactory.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/ArtifactModelContainerFactory.java?rev=696299&r1=696298&r2=696299&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/ArtifactModelContainerFactory.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/ArtifactModelContainerFactory.java Wed Sep 17 06:52:46 2008
@@ -165,7 +165,18 @@
                             return ModelContainerAction.NOP;
                         }
                     }
-                    return ModelContainerAction.DELETE;//TODO Verify - PluginManagement Section may make versions equal
+                    else
+                    {
+                        if ( c.type.equals( type ) )
+                        {
+                            return ModelContainerAction.DELETE;
+                        }
+                        else
+                        {
+                            return ModelContainerAction.NOP;
+                        }
+                    }
+                    //TODO Verify - PluginManagement Section may make versions equal
                 }
 
                 if ( c.version.equals( version ) )
@@ -181,7 +192,14 @@
                 }
                 else
                 {
-                    return ModelContainerAction.DELETE;
+                    if ( c.type.equals( type ) )
+                    {
+                        return ModelContainerAction.DELETE;
+                    }
+                    else
+                    {
+                        return ModelContainerAction.NOP;
+                    }
                 }
             }
             else