o removing the profile manager and profile activation context from the embedder code, it can all be handled in the core having the active/inactive profile ids on hand along with all the profiles that are available from any external sources like the settings.xml

git-svn-id: https://svn.apache.org/repos/asf/maven/components/branches/MNG-2766@775200 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jason van Zyl 2009-05-15 15:49:27 +00:00
parent 8f7f0ce1dd
commit 225d136f27
1 changed files with 13 additions and 84 deletions

View File

@ -28,12 +28,6 @@ import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.embedder.Configuration; import org.apache.maven.embedder.Configuration;
import org.apache.maven.embedder.MavenEmbedderException; import org.apache.maven.embedder.MavenEmbedderException;
import org.apache.maven.execution.MavenExecutionRequest; import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.model.Profile;
import org.apache.maven.model.Repository;
import org.apache.maven.profiles.DefaultProfileManager;
import org.apache.maven.profiles.ProfileActivationContext;
import org.apache.maven.profiles.ProfileActivationException;
import org.apache.maven.profiles.ProfileManager;
import org.apache.maven.repository.RepositorySystem; import org.apache.maven.repository.RepositorySystem;
import org.apache.maven.settings.MavenSettingsBuilder; import org.apache.maven.settings.MavenSettingsBuilder;
import org.apache.maven.settings.Mirror; import org.apache.maven.settings.Mirror;
@ -81,8 +75,6 @@ public class DefaultMavenExecutionRequestPopulator
toolchains( request, configuration ); toolchains( request, configuration );
profileManager( request, configuration );
processSettings( request, configuration ); processSettings( request, configuration );
return request; return request;
@ -144,72 +136,34 @@ public class DefaultMavenExecutionRequestPopulator
} }
} }
// Process plugin groups
// Get profile models
// Get active profiles
private void processSettings( MavenExecutionRequest request, Configuration configuration ) private void processSettings( MavenExecutionRequest request, Configuration configuration )
throws MavenEmbedderException throws MavenEmbedderException
{ {
ProfileManager profileManager = request.getProfileManager();
Settings settings = request.getSettings(); Settings settings = request.getSettings();
request.setPluginGroups( settings.getPluginGroups() ); request.setPluginGroups( settings.getPluginGroups() );
List<org.apache.maven.settings.Profile> settingsProfiles = settings.getProfiles(); List<org.apache.maven.settings.Profile> settingsProfiles = settings.getProfiles();
List<String> settingsActiveProfileIds = settings.getActiveProfiles(); // We just need to keep track of what profiles are being activated by the settings. We don't need to process
// them here. This should be taken care of by the project builder.
if ( settingsActiveProfileIds != null ) //
{ request.addActiveProfiles( settings.getActiveProfiles() );
for ( String profileId : settingsActiveProfileIds )
{ // We only need to take the profiles and make sure they are available when the calculation of the active profiles
profileManager.getProfileActivationContext().setActive( profileId ); // is determined.
} //
}
if ( ( settingsProfiles != null ) && !settingsProfiles.isEmpty() ) if ( ( settingsProfiles != null ) && !settingsProfiles.isEmpty() )
{ {
for ( org.apache.maven.settings.Profile rawProfile : settings.getProfiles() ) for ( org.apache.maven.settings.Profile rawProfile : settings.getProfiles() )
{ {
Profile profile = SettingsUtils.convertFromSettingsProfile( rawProfile ); request.addProfile( SettingsUtils.convertFromSettingsProfile( rawProfile ) );
profileManager.addProfile( profile );
}
// We need to convert profile repositories to artifact repositories
try
{
for ( Profile profile : profileManager.getActiveProfiles() )
{
for ( Repository r : profile.getRepositories() )
{
try
{
request.addRemoteRepository( repositorySystem.buildArtifactRepository( r ) );
}
catch ( InvalidRepositoryException e )
{
throw new MavenEmbedderException( "Cannot create remote repository " + r.getId(), e );
}
}
for ( Repository r : profile.getPluginRepositories() )
{
try
{
request.addRemoteRepository( repositorySystem.buildArtifactRepository( r ) );
}
catch ( InvalidRepositoryException e )
{
throw new MavenEmbedderException( "Cannot create remote repository " + r.getId(), e );
}
}
}
}
catch ( ProfileActivationException e )
{
throw new MavenEmbedderException( "Cannot determine active profiles", e );
} }
} }
injectDefaultRepositories( request ); injectDefaultRepositories( request );
processRepositoriesInSettings( request, configuration ); processRepositoriesInSettings( request, configuration );
@ -396,31 +350,6 @@ public class DefaultMavenExecutionRequestPopulator
} }
} }
// ------------------------------------------------------------------------
// Profile Manager
// ------------------------------------------------------------------------
private void profileManager( MavenExecutionRequest request, Configuration configuration )
{
// ------------------------------------------------------------------------
// Profile Manager
// ------------------------------------------------------------------------
ProfileActivationContext activationContext = request.getProfileActivationContext();
if ( activationContext == null )
{
activationContext = new ProfileActivationContext( request.getProperties(), false );
}
activationContext.setExplicitlyActiveProfileIds( request.getActiveProfiles() );
activationContext.setExplicitlyInactiveProfileIds( request.getInactiveProfiles() );
ProfileManager globalProfileManager = new DefaultProfileManager( activationContext );
request.setProfileManager( globalProfileManager );
request.setProfileActivationContext( activationContext );
}
private void toolchains( MavenExecutionRequest request, Configuration configuration ) private void toolchains( MavenExecutionRequest request, Configuration configuration )
{ {
toolchainsBuilder.setUserToolchainsFile( request.getUserToolchainsFile() ); toolchainsBuilder.setUserToolchainsFile( request.getUserToolchainsFile() );