blob: bb6397680bf57b9f73e6be82cc449f0f79f450da [file] [log] [blame]
package org.apache.maven.execution;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.monitor.event.EventDispatcher;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.DefaultProjectBuilderConfiguration;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuilderConfiguration;
import org.apache.maven.project.artifact.MavenMetadataSource;
import org.apache.maven.settings.Settings;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Properties;
/**
* @author <a href="mailto:jason@maven.org">Jason van Zyl </a>
* @version $Id$
*/
public class MavenSession
{
private PlexusContainer container;
private ArtifactRepository localRepository;
private List<String> goals;
private EventDispatcher eventDispatcher;
// TODO: make this the central one, get rid of build settings...
private final Settings settings;
private ReactorManager reactorManager;
private final String executionRootDir;
private boolean usingPOMsFromFilesystem = true;
private final Properties executionProperties;
private Properties userProperties;
private final Date startTime;
private MavenProject currentProject;
private ProjectBuilderConfiguration projectBuilderConfig;
public MavenSession( PlexusContainer container, Settings settings, ArtifactRepository localRepository,
EventDispatcher eventDispatcher, ReactorManager reactorManager, List<String> goals,
String executionRootDir, Properties executionProperties, Date startTime )
{
this( container, settings, localRepository, eventDispatcher, reactorManager, goals, executionRootDir, executionProperties, null, startTime );
}
public MavenSession( PlexusContainer container, Settings settings, ArtifactRepository localRepository,
EventDispatcher eventDispatcher, ReactorManager reactorManager, List<String> goals,
String executionRootDir, Properties executionProperties, Properties userProperties, Date startTime )
{
this.container = container;
this.settings = settings;
this.localRepository = localRepository;
this.eventDispatcher = eventDispatcher;
this.reactorManager = reactorManager;
this.goals = goals;
this.executionRootDir = executionRootDir;
this.executionProperties = executionProperties;
this.userProperties = userProperties;
this.startTime = startTime;
}
public MavenSession( PlexusContainer container, MavenExecutionRequest request, ReactorManager rpm )
{
this.container = container;
this.settings = request.getSettings();
this.localRepository = request.getLocalRepository();
this.eventDispatcher = request.getEventDispatcher();
this.reactorManager = rpm;
this.goals = request.getGoals();
this.executionRootDir = request.getBaseDirectory();
this.executionProperties = request.getExecutionProperties();
this.userProperties = request.getUserProperties();
this.startTime = request.getStartTime();
this.projectBuilderConfig = request.getProjectBuilderConfiguration();
}
public Map getPluginContext( PluginDescriptor pluginDescriptor, MavenProject project )
{
return reactorManager.getPluginContext( pluginDescriptor, project );
}
public PlexusContainer getContainer()
{
return container;
}
public ArtifactRepository getLocalRepository()
{
return localRepository;
}
public List<String> getGoals()
{
return goals;
}
public Properties getExecutionProperties()
{
return executionProperties;
}
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
public Object lookup( String role )
throws ComponentLookupException
{
return container.lookup( role );
}
public Object lookup( String role, String roleHint )
throws ComponentLookupException
{
return container.lookup( role, roleHint );
}
public List<?> lookupList( String role )
throws ComponentLookupException
{
return container.lookupList( role );
}
public Map<String, ?> lookupMap( String role )
throws ComponentLookupException
{
return container.lookupMap( role );
}
public EventDispatcher getEventDispatcher()
{
return eventDispatcher;
}
public Settings getSettings()
{
return settings;
}
public List<MavenProject> getSortedProjects()
{
return reactorManager.getSortedProjects();
}
public String getExecutionRootDirectory()
{
return executionRootDir;
}
public void setUsingPOMsFromFilesystem( boolean usingPOMsFromFilesystem )
{
this.usingPOMsFromFilesystem = usingPOMsFromFilesystem;
}
public boolean isUsingPOMsFromFilesystem()
{
return usingPOMsFromFilesystem;
}
public Date getStartTime()
{
return startTime;
}
public void setCurrentProject( MavenProject currentProject )
{
this.currentProject = currentProject;
}
/**
* Return the current project for use in a mojo execution.
*/
public MavenProject getCurrentProject()
{
return currentProject;
}
public Properties getUserProperties()
{
return userProperties;
}
public void setUserProperties( Properties userProperties )
{
this.userProperties = userProperties;
}
public ProjectBuilderConfiguration getProjectBuilderConfiguration()
{
if ( projectBuilderConfig == null )
{
ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration();
config.setLocalRepository( getLocalRepository() )
.setExecutionProperties( getExecutionProperties() )
.setUserProperties( getUserProperties() )
.setBuildStartTime( getStartTime() );
this.projectBuilderConfig = config;
}
return projectBuilderConfig;
}
}