in maven-core/src/main/java/org/apache/maven/DefaultMaven.java [248:337]
private ReactorManager doExecute( MavenExecutionRequest request, EventDispatcher dispatcher )
throws MavenExecutionException, BuildFailureException, LifecycleExecutionException
{
try
{
resolveParameters( request.getSettings(), request.getExecutionProperties() );
}
catch ( ComponentLookupException e )
{
throw new MavenExecutionException( "Unable to configure Maven for execution", e );
}
catch ( ComponentLifecycleException e )
{
throw new MavenExecutionException( "Unable to configure Maven for execution", e );
}
catch ( SettingsConfigurationException e )
{
throw new MavenExecutionException( "Unable to configure Maven for execution", e );
}
ProfileManager globalProfileManager = request.getGlobalProfileManager();
globalProfileManager.loadSettingsProfiles( request.getSettings() );
getLogger().info( "Scanning for projects..." );
request.getProjectBuilderConfiguration()
.setMetadataSource( new MavenMetadataSource( mavenMetadataSource, request.getProjectBuilderConfiguration() ) );
boolean foundProjects = true;
List projects = getProjects( request );
if ( projects.isEmpty() )
{
projects.add( getSuperProject( request ) );
foundProjects = false;
}
ReactorManager rm;
try
{
String resumeFrom = request.getResumeFrom();
List projectList = request.getSelectedProjects();
String makeBehavior = request.getMakeBehavior();
rm = new ReactorManager( projects, projectList, resumeFrom, makeBehavior );
rm.setFailureBehavior( request.getFailureBehavior() );
}
catch ( CycleDetectedException e )
{
throw new BuildFailureException(
"The projects in the reactor contain a cyclic reference: " + e.getMessage(), e );
}
catch ( DuplicateProjectException e )
{
throw new BuildFailureException( e.getMessage(), e );
}
catch ( MissingProjectException e )
{
throw new BuildFailureException( e.getMessage(), e );
}
// --------------------------------------------------------------------------------
// MNG-3641: print a warning if one of the profiles to be activated explicitly
// was not activated
validateActivatedProfiles( globalProfileManager, projects );
if ( rm.hasMultipleProjects() )
{
getLogger().info( "Reactor build order: " );
for ( Iterator i = rm.getSortedProjects().iterator(); i.hasNext(); )
{
MavenProject project = (MavenProject) i.next();
getLogger().info( " " + project.getName() );
}
}
MavenSession session = createSession( request, rm );
session.setUsingPOMsFromFilesystem( foundProjects );
lifecycleExecutor.execute( session, rm, dispatcher );
return rm;
}