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;
}