You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mk...@apache.org on 2006/06/17 08:46:58 UTC

svn commit: r415000 - in /maven/components/trunk: maven-core/src/main/java/org/apache/maven/ maven-embedder/src/main/java/org/apache/maven/embedder/ maven-project/src/main/java/org/apache/maven/profiles/ maven-project/src/main/java/org/apache/maven/pro...

Author: mkleint
Date: Fri Jun 16 23:46:58 2006
New Revision: 415000

URL: http://svn.apache.org/viewvc?rev=415000&view=rev
Log:
MNG-2364 make sure the system properties are passed from the execution/embed requests, to make the on-property profile activation work in embedded environment

Modified:
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultMavenEmbedRequest.java
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedRequest.java
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.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/ProfileManager.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/SystemPropertyProfileActivator.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/MavenProjectBuilder.java

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=415000&r1=414999&r2=415000&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 Fri Jun 16 23:46:58 2006
@@ -306,7 +306,7 @@
             throw new MavenExecutionException( "Unable to configure Maven for execution", e );
         }
 
-        ProfileManager globalProfileManager = new DefaultProfileManager( container );
+        ProfileManager globalProfileManager = new DefaultProfileManager( container, request.getProperties() );
 
         globalProfileManager.loadSettingsProfiles( request.getSettings() );
 
@@ -372,7 +372,8 @@
         MavenProject superProject;
         try
         {
-            superProject = projectBuilder.buildStandaloneSuperProject( request.getLocalRepository() );
+            superProject = projectBuilder.buildStandaloneSuperProject( request.getLocalRepository(), 
+                                                   new DefaultProfileManager( container, request.getProperties()) );
 
         }
         catch ( ProjectBuildingException e )

Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultMavenEmbedRequest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultMavenEmbedRequest.java?rev=415000&r1=414999&r2=415000&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultMavenEmbedRequest.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultMavenEmbedRequest.java Fri Jun 16 23:46:58 2006
@@ -19,6 +19,7 @@
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Properties;
 
 import org.apache.maven.settings.Settings;
 
@@ -43,6 +44,8 @@
 
     private ContainerCustomizer customizer;
 
+    private Properties systemProperties;
+
     /**
      * Creates a new instance of DefaultMavenEmbedRequest
      */
@@ -123,6 +126,17 @@
     public ContainerCustomizer getContainerCustomizer()
     {
         return customizer;
+    }
+
+    public MavenEmbedRequest setSystemProperties(Properties properties) 
+    {
+        systemProperties = properties;
+        return this;
+    }
+
+    public Properties getSystemProperties() 
+    {
+        return systemProperties != null ? systemProperties : System.getProperties();
     }
 
 }

Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedRequest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedRequest.java?rev=415000&r1=414999&r2=415000&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedRequest.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedRequest.java Fri Jun 16 23:46:58 2006
@@ -18,6 +18,7 @@
 import java.io.File;
 import java.net.URL;
 import java.util.List;
+import java.util.Properties;
 import org.apache.maven.settings.Settings;
 
 /**
@@ -60,6 +61,11 @@
      */
     MavenEmbedRequest setConfigurationCustomizer(ContainerCustomizer customizer);
     
+    /**
+     * set the system properties to be used during the lifecycle of the embedder. Excluding the time when executing the project, then the properties from MavenExecutionRequestare used.
+     */
+    MavenEmbedRequest setSystemProperties( Properties properties );
+    
     List getActiveProfiles();
 
     List getInactiveProfiles();
@@ -69,5 +75,8 @@
     File getGlobalSettingsFile();
     
     ContainerCustomizer getContainerCustomizer();
+    
+    Properties getSystemProperties();
+    
     
 }

Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java?rev=415000&r1=414999&r2=415000&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java Fri Jun 16 23:46:58 2006
@@ -602,7 +602,7 @@
 
             pluginDescriptorBuilder = new PluginDescriptorBuilder();
 
-            profileManager = new DefaultProfileManager( embedder.getContainer() );
+            profileManager = new DefaultProfileManager( embedder.getContainer(), req.getSystemProperties() );
             
             profileManager.explicitlyActivate(req.getActiveProfiles());
             

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=415000&r1=414999&r2=415000&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 Fri Jun 16 23:46:58 2006
@@ -1,5 +1,6 @@
 package org.apache.maven.profiles;
 
+import java.util.Properties;
 import org.apache.maven.model.Activation;
 import org.apache.maven.model.Profile;
 import org.apache.maven.profiles.activation.ProfileActivationException;
@@ -45,18 +46,43 @@
     private List defaultIds = new ArrayList();
 
     private Map profilesById = new LinkedHashMap();
-
+    
+    // default fallback..
+    private Properties systemProperties = System.getProperties();
+
+    /**
+     * @deprecated without passing in the system properties, the SystemPropertiesProfileActivator will not work correctly
+     * in embedded envirnments.
+     */
     public DefaultProfileManager( PlexusContainer container )
     {
-        this( container, null );
+        this( container, (Settings)null);
+    }
+    
+    /**
+     * the properties passed to the profile manager are the props that
+     * are passed to maven, possibly containing profile activator properties
+     *
+     */
+    public DefaultProfileManager( PlexusContainer container, Properties props )
+    {
+        this( container, (Settings)null );
+        if (props != null) {
+            systemProperties = props;
+        }
+        
     }
 
-    public DefaultProfileManager( PlexusContainer container, Settings settings )
+    private DefaultProfileManager( PlexusContainer container, Settings settings )
     {
         this.container = container;
 
         loadSettingsProfiles( settings );
     }
+    
+    public Properties getSystemProperties() {
+        return systemProperties;
+    }
 
     public Map getProfilesById()
     {
@@ -202,6 +228,7 @@
         throws ProfileActivationException
     {
         List activators = null;
+        container.addContextValue("SystemProperties", systemProperties);
         try
         {
             activators = container.lookupList( ProfileActivator.ROLE );
@@ -224,13 +251,17 @@
         }
         finally
         {
-            try
+            container.getContext().put("SystemProperties", null);
+            if ( activators != null )
             {
-                container.releaseAll( activators );
-            }
-            catch ( ComponentLifecycleException e )
-            {
-                container.getLogger().debug( "Error releasing profile activators - ignoring.", e );
+                try
+                {
+                    container.releaseAll( activators );
+                }
+                catch ( ComponentLifecycleException e )
+                {
+                    container.getLogger().debug( "Error releasing profile activators - ignoring.", e );
+                }
             }
         }
     }

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileManager.java?rev=415000&r1=414999&r2=415000&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileManager.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileManager.java Fri Jun 16 23:46:58 2006
@@ -1,5 +1,6 @@
 package org.apache.maven.profiles;
 
+import java.util.Properties;
 import org.apache.maven.model.Profile;
 import org.apache.maven.profiles.activation.ProfileActivationException;
 import org.apache.maven.settings.Settings;
@@ -36,4 +37,5 @@
     List getIdsActivatedByDefault();
 
     void loadSettingsProfiles( Settings settings );
+    
 }

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/SystemPropertyProfileActivator.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/SystemPropertyProfileActivator.java?rev=415000&r1=414999&r2=415000&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/SystemPropertyProfileActivator.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/SystemPropertyProfileActivator.java Fri Jun 16 23:46:58 2006
@@ -1,8 +1,12 @@
 package org.apache.maven.profiles.activation;
 
+import java.util.Properties;
 import org.apache.maven.model.Activation;
 import org.apache.maven.model.ActivationProperty;
 import org.apache.maven.model.Profile;
+import org.codehaus.plexus.context.Context;
+import org.codehaus.plexus.context.ContextException;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 import org.codehaus.plexus.util.StringUtils;
 
 /*
@@ -22,8 +26,15 @@
  */
 
 public class SystemPropertyProfileActivator
-    extends DetectedProfileActivator
+    extends DetectedProfileActivator implements Contextualizable
 {
+    private Properties properties;
+    
+    public void contextualize(Context context) throws ContextException 
+    {
+        properties = (Properties)context.get("SystemProperties");
+    }
+    
     protected boolean canDetectActivation( Profile profile )
     {
         return profile.getActivation() != null && profile.getActivation().getProperty() != null;
@@ -46,7 +57,7 @@
                 name = name.substring( 1 );
             }
             
-            String sysValue = System.getProperty( name );
+            String sysValue = properties.getProperty( name );
 
             String propValue = property.getValue();
             if ( StringUtils.isNotEmpty( propValue ) )

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=415000&r1=414999&r2=415000&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 Fri Jun 16 23:46:58 2006
@@ -241,6 +241,14 @@
     public MavenProject buildStandaloneSuperProject( ArtifactRepository localRepository )
         throws ProjectBuildingException
     {
+        //TODO mkleint - use the (Container, Properties) constructor to make system properties embeddable
+        ProfileManager profileManager = new DefaultProfileManager( container );
+        return buildStandaloneSuperProject( localRepository, profileManager );
+    }
+    
+    public MavenProject buildStandaloneSuperProject( ArtifactRepository localRepository, ProfileManager profileManager ) 
+        throws ProjectBuildingException
+    {
         Model superModel = getSuperModel();
 
         superModel.setGroupId( STANDALONE_SUPERPOM_GROUPID );
@@ -249,7 +257,6 @@
 
         superModel.setVersion( STANDALONE_SUPERPOM_VERSION );
 
-        ProfileManager profileManager = new DefaultProfileManager( container );
 
         List activeProfiles;
 
@@ -606,7 +613,15 @@
 
         Model superModel = getSuperModel();
 
-        ProfileManager superProjectProfileManager = new DefaultProfileManager( container );
+        //TODO mkleint - use the (Container, Properties) constructor to make system properties embeddable
+        // shall the ProfileManager intefrace expose the properties?
+        
+        ProfileManager superProjectProfileManager;
+        if (externalProfileManager instanceof DefaultProfileManager) {
+            superProjectProfileManager = new DefaultProfileManager( container, ((DefaultProfileManager) externalProfileManager).getSystemProperties() );
+        } else {
+            superProjectProfileManager = new DefaultProfileManager( container );
+        }
 
         List activeProfiles;
 
@@ -965,7 +980,13 @@
             }
         }
 
-        ProfileManager profileManager = new DefaultProfileManager( container );
+        //TODO mkleint - use the (Container, Properties constructor to make system properties embeddable
+        ProfileManager profileManager;
+        if (externalProfileManager != null && externalProfileManager instanceof DefaultProfileManager ) {
+            profileManager = new DefaultProfileManager( container, ((DefaultProfileManager)externalProfileManager).getSystemProperties() );
+        } else {
+            profileManager = new DefaultProfileManager( container );
+        }
 
         if ( externalProfileManager != null )
         {

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java?rev=415000&r1=414999&r2=415000&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 Fri Jun 16 23:46:58 2006
@@ -90,4 +90,10 @@
 
     MavenProject buildStandaloneSuperProject( ArtifactRepository localRepository )
         throws ProjectBuildingException;
+    
+    /**
+     * need to pass a profilemanager with correct context (eg. with execution properties)
+     */
+    MavenProject buildStandaloneSuperProject( ArtifactRepository localRepository, ProfileManager profileManager )
+        throws ProjectBuildingException;
 }