You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2007/03/07 23:37:31 UTC

svn commit: r515816 [1/2] - in /maven/components/branches/2.1-lifecycle-refactor: ./ maven-build-context/src/main/java/org/apache/maven/context/ maven-core/ maven-core/src/main/java/org/apache/maven/ maven-core/src/main/java/org/apache/maven/execution/...

Author: jdcasey
Date: Wed Mar  7 14:37:29 2007
New Revision: 515816

URL: http://svn.apache.org/viewvc?view=rev&rev=515816
Log:
Almost ready to integrate the new LifecyclePlanner stuff into the LifecycleExecutor...this should give us the ability to view the build process from a plugin, or modify it using special syntax in the POM.

Added:
    maven/components/branches/2.1-lifecycle-refactor/maven-build-context/src/main/java/org/apache/maven/context/ScopedBuildContext.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/execution/SessionContext.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/binding/
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/parser/
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/parser/LegacyLifecycleMappingParser.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/parser/PrefixedMojoBinding.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlan.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlanner.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecyclePlan.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecyclePlanner.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoader.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoaderException.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/pom.xml   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/ClassLoaderXmlBindingLoader.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleBindingLoader.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleException.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleLoaderException.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleSpecificationException.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleWalker.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/NoSuchLifecycleException.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/NoSuchPhaseException.java   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/mdo/
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/mdo/maven-lifecycle.mdo   (with props)
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/test/
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/test/java/
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/test/java/org/
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/test/java/org/apache/
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/test/java/org/apache/maven/
    maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/test/java/org/apache/maven/lifecycle/
    maven/components/branches/2.1-lifecycle-refactor/maven-project/src/main/java/org/apache/maven/context/
    maven/components/branches/2.1-lifecycle-refactor/maven-project/src/main/java/org/apache/maven/context/ProjectScopedContext.java   (with props)
Modified:
    maven/components/branches/2.1-lifecycle-refactor/maven-core/pom.xml
    maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
    maven/components/branches/2.1-lifecycle-refactor/pom.xml

Added: maven/components/branches/2.1-lifecycle-refactor/maven-build-context/src/main/java/org/apache/maven/context/ScopedBuildContext.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-build-context/src/main/java/org/apache/maven/context/ScopedBuildContext.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-build-context/src/main/java/org/apache/maven/context/ScopedBuildContext.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-build-context/src/main/java/org/apache/maven/context/ScopedBuildContext.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,109 @@
+package org.apache.maven.context;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class ScopedBuildContext
+    implements BuildContext, ManagedBuildData
+{
+    
+    private final BuildContext parentBuildContext;
+    private final String scopeKey;
+    
+    private Map localContext;
+
+    public ScopedBuildContext( String scopeKey, BuildContext parentBuildContext )
+    {
+        this.scopeKey = scopeKey;
+        this.parentBuildContext = parentBuildContext;
+        
+        this.localContext = (Map) parentBuildContext.get( scopeKey );
+        if ( localContext == null )
+        {
+            this.localContext = new HashMap();
+            parentBuildContext.store( this );
+        }
+    }
+
+    public Object delete( Object key )
+    {
+        return localContext.remove( key );
+    }
+
+    public Object get( Object key )
+    {
+        return localContext.get( key );
+    }
+
+    public void put( Object key, Object value )
+    {
+        localContext.put( key, value );
+    }
+
+    /**
+     * @deprecated Use {@link BuildContext#store(ManagedBuildData)} instead.
+     */
+    public void put( ManagedBuildData managedData )
+    {
+        localContext.put( managedData.getStorageKey(), managedData.getData() );
+    }
+
+    public boolean retrieve( ManagedBuildData managedData )
+    {
+        Map data = (Map) localContext.get( managedData.getStorageKey() );
+        
+        if ( data != null )
+        {
+            managedData.setData( data );
+            return true;
+        }
+        else
+        {
+            return false;
+        }
+    }
+
+    public void store( ManagedBuildData managedData )
+    {
+        localContext.put( managedData.getStorageKey(), managedData.getData() );
+    }
+
+    public Map getData()
+    {
+        return localContext;
+    }
+
+    public String getStorageKey()
+    {
+        return scopeKey;
+    }
+
+    public void setData( Map data )
+    {
+        this.localContext = data;
+    }
+    
+    public void storeContext( BuildContextManager buildContextManager )
+    {
+        if ( parentBuildContext instanceof ScopedBuildContext )
+        {
+            ((ScopedBuildContext) parentBuildContext).storeContext( buildContextManager );
+        }
+        else
+        {
+            buildContextManager.storeBuildContext( parentBuildContext );
+        }
+    }
+    
+    public BuildContext getParentBuildContext()
+    {
+        return parentBuildContext;
+    }
+    
+    public void delete( BuildContextManager buildContextManager )
+    {
+        parentBuildContext.delete( scopeKey );
+        storeContext( buildContextManager );
+    }
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-build-context/src/main/java/org/apache/maven/context/ScopedBuildContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-build-context/src/main/java/org/apache/maven/context/ScopedBuildContext.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/components/branches/2.1-lifecycle-refactor/maven-core/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/pom.xml?view=diff&rev=515816&r1=515815&r2=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-core/pom.xml (original)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-core/pom.xml Wed Mar  7 14:37:29 2007
@@ -32,6 +32,11 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
+      <artifactId>maven-lifecycle</artifactId>
+      <version>2.1-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
       <artifactId>maven-build-context</artifactId>
       <version>2.1-SNAPSHOT</version>
     </dependency>
@@ -147,6 +152,11 @@
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-classworlds</artifactId>
       <version>1.2-alpha-5</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-active-collections</artifactId>
+      <version>1.0-SNAPSHOT</version>
     </dependency>
   </dependencies>
 </project>

Modified: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?view=diff&rev=515816&r1=515815&r2=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/DefaultMaven.java (original)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/DefaultMaven.java Wed Mar  7 14:37:29 2007
@@ -33,6 +33,7 @@
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.execution.ReactorManager;
 import org.apache.maven.execution.RuntimeInformation;
+import org.apache.maven.execution.SessionContext;
 import org.apache.maven.extension.BuildExtensionScanner;
 import org.apache.maven.extension.ExtensionScanningException;
 import org.apache.maven.lifecycle.LifecycleExecutor;
@@ -542,7 +543,12 @@
                                           ReactorManager rpm,
                                           EventDispatcher dispatcher )
     {        
-        return new MavenSession( container, request, dispatcher, rpm );
+        MavenSession session = new MavenSession( container, request, dispatcher, rpm );
+        
+        SessionContext ctx = new SessionContext( session );
+        ctx.store( buildContextManager );
+        
+        return session;
     }
 
     // ----------------------------------------------------------------------

Added: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/execution/SessionContext.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/execution/SessionContext.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/execution/SessionContext.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/execution/SessionContext.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,157 @@
+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.context.BuildContext;
+import org.apache.maven.context.BuildContextManager;
+import org.apache.maven.context.ManagedBuildData;
+import org.apache.maven.monitor.event.EventDispatcher;
+import org.apache.maven.settings.Settings;
+
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * Build context object that supplies information about how Maven was invoked, including all of the
+ * information available in the MavenExecutionRequest (in read-only form).
+ */
+public class SessionContext
+    implements ManagedBuildData
+{
+    
+    public static final String BUILD_CONTEXT_KEY = SessionContext.class.getName();
+    
+    private static final String REQUEST_KEY = "request";
+    
+    private MavenSession session;
+    
+    private SessionContext()
+    {
+    }
+
+    public SessionContext( MavenSession session )
+    {
+        this.session = session;
+    }
+
+    public String getStorageKey()
+    {
+        return BUILD_CONTEXT_KEY;
+    }
+
+    public static SessionContext read( BuildContextManager buildContextManager )
+    {
+        BuildContext buildContext = buildContextManager.readBuildContext( false );
+        
+        SessionContext sessionContext = new SessionContext();
+        
+        if ( buildContext != null )
+        {
+            if ( !buildContext.retrieve( sessionContext ) )
+            {
+                return null;
+            }
+        }
+        
+        return sessionContext;
+    }
+    
+    public void store( BuildContextManager buildContextManager )
+    {
+        BuildContext buildContext = buildContextManager.readBuildContext( true );
+        
+        buildContext.store( this );
+        
+        buildContextManager.storeBuildContext( buildContext );
+    }
+
+    public Map getData()
+    {
+        return Collections.singletonMap( REQUEST_KEY, session );
+    }
+
+    public void setData( Map data )
+    {
+        this.session = (MavenSession) data.get( REQUEST_KEY );
+    }
+
+    //------------------------------------------------------------
+    // DELEGATED METHODS, USING DEFENSIVE COPIES WHERE POSSIBLE.
+    //------------------------------------------------------------
+    
+    public EventDispatcher getEventDispatcher()
+    {
+        return session.getEventDispatcher();
+    }
+
+    public Properties getExecutionProperties()
+    {
+        return new Properties( session.getExecutionProperties() );
+    }
+
+    public String getExecutionRootDirectory()
+    {
+        return session.getExecutionRootDirectory();
+    }
+
+    public List getGoals()
+    {
+        return Collections.unmodifiableList( session.getGoals() );
+    }
+
+    public ArtifactRepository getLocalRepository()
+    {
+        return session.getLocalRepository();
+    }
+
+    public MavenExecutionRequest getRequest()
+    {
+        return session.getRequest();
+    }
+
+    public Settings getSettings()
+    {
+        return session.getSettings();
+    }
+
+    public List getSortedProjects()
+    {
+        return Collections.unmodifiableList( session.getSortedProjects() );
+    }
+
+    public Date getStartTime()
+    {
+        return new Date( session.getStartTime().getTime() );
+    }
+
+    public boolean isUsingPOMsFromFilesystem()
+    {
+        return session.isUsingPOMsFromFilesystem();
+    }
+
+    public MavenSession getSession()
+    {
+        return session;
+    }
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/execution/SessionContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/execution/SessionContext.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,192 @@
+package org.apache.maven.lifecycle.binding;
+
+import org.apache.maven.lifecycle.LifecycleBindingLoader;
+import org.apache.maven.lifecycle.LifecycleBindings;
+import org.apache.maven.lifecycle.LifecycleLoaderException;
+import org.apache.maven.lifecycle.LifecycleSpecificationException;
+import org.apache.maven.lifecycle.LifecycleWalker;
+import org.apache.maven.lifecycle.MojoBinding;
+import org.apache.maven.lifecycle.parser.LegacyLifecycleMappingParser;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.model.PluginExecution;
+import org.apache.maven.plugin.descriptor.MojoDescriptor;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.plugin.loader.PluginLoader;
+import org.apache.maven.plugin.loader.PluginLoaderException;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.collections.ActiveMap;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.logging.LogEnabled;
+import org.codehaus.plexus.logging.Logger;
+
+import java.util.Iterator;
+import java.util.List;
+
+//FIXME: This needs a better name!
+public class DefaultLifecycleBindingManager
+    implements LifecycleBindingManager, LogEnabled
+{
+
+    private ActiveMap bindingsByPackaging;
+
+    private PluginLoader pluginLoader;
+
+    private Logger logger;
+
+    // configured. Moved out of DefaultLifecycleExecutor...
+    private List legacyLifecycles;
+    
+    public LifecycleBindings getBindingsForPackaging( MavenProject project )
+        throws LifecycleLoaderException, LifecycleSpecificationException
+    {
+        String packaging = project.getPackaging();
+
+        LifecycleBindings bindings = null;
+
+        LifecycleBindingLoader loader = (LifecycleBindingLoader) bindingsByPackaging.get( packaging );
+        if ( loader != null )
+        {
+            bindings = loader.getBindings();
+        }
+        else
+        {
+            bindings = searchPluginsWithExtensions( project );
+        }
+
+        if ( bindings == null )
+        {
+            bindings = getDefaultBindings();
+        }
+
+        return bindings;
+    }
+
+    private LifecycleBindings searchPluginsWithExtensions( MavenProject project )
+        throws LifecycleLoaderException, LifecycleSpecificationException
+    {
+        List plugins = project.getBuildPlugins();
+        String packaging = project.getPackaging();
+
+        LifecycleBindings bindings = null;
+
+        for ( Iterator it = plugins.iterator(); it.hasNext(); )
+        {
+            Plugin plugin = (Plugin) it.next();
+            if ( plugin.isExtensions() )
+            {
+                LifecycleBindingLoader loader = null;
+
+                try
+                {
+                    loader = (LifecycleBindingLoader) pluginLoader.loadPluginComponent( LifecycleBindingLoader.ROLE, packaging,
+                                                                                        plugin, project );
+                }
+                catch ( ComponentLookupException e )
+                {
+                    logger.debug( LifecycleBindingLoader.ROLE + " for packaging: " + packaging
+                        + " could not be retrieved from plugin: " + plugin.getKey() + ".\nReason: " + e.getMessage(), e );
+                }
+                catch ( PluginLoaderException e )
+                {
+                    throw new LifecycleLoaderException( "Failed to load plugin: " + plugin.getKey() + ". Reason: "
+                        + e.getMessage(), e );
+                }
+                
+                if ( loader != null )
+                {
+                    bindings = loader.getBindings();
+                    
+                    if ( bindings != null )
+                    {
+                        break;
+                    }
+                }
+            }
+        }
+
+        return bindings;
+    }
+
+    public LifecycleBindings getDefaultBindings()
+        throws LifecycleSpecificationException
+    {
+        return LegacyLifecycleMappingParser.parseDefaultMappings( legacyLifecycles );
+    }
+
+    public void enableLogging( Logger logger )
+    {
+        this.logger = logger;
+    }
+
+    public LifecycleBindings getProjectCustomBindings( MavenProject project )
+        throws LifecycleLoaderException, LifecycleSpecificationException
+    {
+        String projectId = project.getId();
+        
+        LifecycleBindings bindings = new LifecycleBindings();
+        bindings.setOrigin( projectId );
+        bindings.setPackaging( project.getPackaging() );
+        
+        List plugins = project.getBuildPlugins();
+        if ( plugins != null )
+        {
+            for ( Iterator it = plugins.iterator(); it.hasNext(); )
+            {
+                Plugin plugin = (Plugin) it.next();
+                PluginDescriptor pluginDescriptor = null;
+                
+                List executions = plugin.getExecutions();
+                if ( executions != null )
+                {
+                    for ( Iterator execIt = executions.iterator(); execIt.hasNext(); )
+                    {
+                        PluginExecution execution = (PluginExecution) execIt.next();
+                        
+                        List goals = execution.getGoals();
+                        for ( Iterator goalIterator = goals.iterator(); goalIterator.hasNext(); )
+                        {
+                            String goal = (String) goalIterator.next();
+                            
+                            MojoBinding mojoBinding = new MojoBinding();
+                            
+                            mojoBinding.setGroupId( plugin.getGroupId() );
+                            mojoBinding.setArtifactId( plugin.getArtifactId() );
+                            mojoBinding.setVersion( plugin.getVersion() );
+                            mojoBinding.setGoal( goal );
+                            mojoBinding.setDefaultConfiguration( execution.getConfiguration() );
+                            
+                            String phase = execution.getPhase();
+                            if ( phase == null )
+                            {
+                                if ( pluginDescriptor == null )
+                                {
+                                    try
+                                    {
+                                        pluginDescriptor = pluginLoader.loadPlugin( plugin, project );
+                                    }
+                                    catch ( PluginLoaderException e )
+                                    {
+                                        throw new LifecycleLoaderException( "Failed to load plugin: " + plugin + ". Reason: " + e.getMessage(), e );
+                                    }
+                                }
+                                
+                                MojoDescriptor mojoDescriptor = pluginDescriptor.getMojo( goal );
+                                phase = mojoDescriptor.getPhase();
+                                
+                                if ( phase == null )
+                                {
+                                    throw new LifecycleSpecificationException( "No phase specified for goal: " + goal + " in plugin: " + plugin.getKey() + " from POM: " + projectId );
+                                }
+                            }
+                            
+                            LifecycleWalker.addMojoBinding( phase, mojoBinding, bindings );
+                        }
+                    }
+                }
+            }
+        }
+        
+        return bindings;
+    }
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,23 @@
+package org.apache.maven.lifecycle.binding;
+
+import org.apache.maven.lifecycle.LifecycleBindings;
+import org.apache.maven.lifecycle.LifecycleLoaderException;
+import org.apache.maven.lifecycle.LifecycleSpecificationException;
+import org.apache.maven.project.MavenProject;
+
+// FIXME: This needs a better name!
+public interface LifecycleBindingManager
+{
+    
+    String ROLE = LifecycleBindingManager.class.getName();
+
+    LifecycleBindings getDefaultBindings()
+        throws LifecycleSpecificationException;
+
+    LifecycleBindings getBindingsForPackaging( MavenProject project )
+        throws LifecycleLoaderException, LifecycleSpecificationException;
+
+    LifecycleBindings getProjectCustomBindings( MavenProject project )
+        throws LifecycleLoaderException, LifecycleSpecificationException;
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/parser/LegacyLifecycleMappingParser.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/parser/LegacyLifecycleMappingParser.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/parser/LegacyLifecycleMappingParser.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/parser/LegacyLifecycleMappingParser.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,202 @@
+package org.apache.maven.lifecycle.parser;
+
+import org.apache.maven.lifecycle.BuildBinding;
+import org.apache.maven.lifecycle.CleanBinding;
+import org.apache.maven.lifecycle.Lifecycle;
+import org.apache.maven.lifecycle.LifecycleBindings;
+import org.apache.maven.lifecycle.LifecycleSpecificationException;
+import org.apache.maven.lifecycle.MojoBinding;
+import org.apache.maven.lifecycle.Phase;
+import org.apache.maven.lifecycle.SiteBinding;
+import org.apache.maven.lifecycle.mapping.LifecycleMapping;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+public final class LegacyLifecycleMappingParser
+{
+
+    public static LifecycleBindings parseDefaultMappings( List lifecycles )
+        throws LifecycleSpecificationException
+    {
+        LifecycleBindings bindings = new LifecycleBindings();
+        
+        bindings.setOrigin( "Maven core" );
+        bindings.setPackaging( "unmatched" );
+        
+        for ( Iterator it = lifecycles.iterator(); it.hasNext(); )
+        {
+            Lifecycle lifecycle = (Lifecycle) it.next();
+            
+            if ( "clean".equals( lifecycle.getId() ) )
+            {
+                bindings.setCleanBinding( parseCleanBindings( lifecycle.getDefaultPhases() ) );
+            }
+            else if ( "site".equals( lifecycle.getId() ) )
+            {
+                bindings.setSiteBinding( parseSiteBindings( lifecycle.getDefaultPhases() ) );
+            }
+            else if ( "default".equals( lifecycle.getId() ) )
+            {
+                bindings.setBuildBinding( parseBuildBindings( lifecycle.getDefaultPhases() ) );
+            }
+            else
+            {
+                throw new LifecycleSpecificationException( "Unrecognized lifecycle: " + lifecycle.getId() );
+            }
+        }
+
+        return bindings;
+    }
+
+    public static LifecycleBindings parseMappings( LifecycleMapping mapping, String packaging )
+        throws LifecycleSpecificationException
+    {
+        LifecycleBindings bindings = new LifecycleBindings();
+        bindings.setOrigin( "Maven core" );
+        bindings.setPackaging( packaging );
+
+        bindings.setCleanBinding( parseCleanBindings( mapping.getPhases( "clean" ) ) );
+        bindings.setBuildBinding( parseBuildBindings( mapping.getPhases( "default" ) ) );
+        bindings.setSiteBinding( parseSiteBindings( mapping.getPhases( "site" ) ) );
+
+        return bindings;
+    }
+
+    public static MojoBinding parseMojoBinding( String bindingSpec, boolean allowPrefixReference )
+        throws LifecycleSpecificationException
+    {
+        StringTokenizer tok = new StringTokenizer( bindingSpec, ":" );
+        int numTokens = tok.countTokens();
+
+        MojoBinding binding = null;
+
+        if ( numTokens == 2 )
+        {
+            if ( !allowPrefixReference )
+            {
+                String msg = "Mapped-prefix lookup of mojos are only supported from direct invocation. "
+                    + "Please use specification of the form groupId:artifactId[:version]:goal instead.";
+
+                throw new LifecycleSpecificationException( msg );
+            }
+
+            binding = new PrefixedMojoBinding();
+
+            ( (PrefixedMojoBinding) binding ).setPrefix( tok.nextToken() );
+            binding.setGoal( tok.nextToken() );
+
+        }
+        else if ( numTokens == 3 || numTokens == 4 )
+        {
+            binding = new MojoBinding();
+
+            binding.setGroupId( tok.nextToken() );
+            binding.setArtifactId( tok.nextToken() );
+
+            if ( numTokens == 4 )
+            {
+                binding.setVersion( tok.nextToken() );
+            }
+
+            binding.setGoal( tok.nextToken() );
+        }
+        else
+        {
+            String message = "Invalid task '" + bindingSpec + "': you must specify a valid lifecycle phase, or"
+                + " a goal in the format plugin:goal or pluginGroupId:pluginArtifactId:pluginVersion:goal";
+
+            throw new LifecycleSpecificationException( message );
+        }
+
+        return binding;
+    }
+
+    private static BuildBinding parseBuildBindings( Map phases )
+        throws LifecycleSpecificationException
+    {
+        BuildBinding binding = new BuildBinding();
+
+        binding.setValidate( parsePhaseBindings( (String) phases.get( "validate" ) ) );
+        binding.setInitialize( parsePhaseBindings( (String) phases.get( "initialize" ) ) );
+        binding.setGenerateSources( parsePhaseBindings( (String) phases.get( "generate-sources" ) ) );
+        binding.setProcessSources( parsePhaseBindings( (String) phases.get( "process-sources" ) ) );
+        binding.setGenerateResources( parsePhaseBindings( (String) phases.get( "generate-resources" ) ) );
+        binding.setProcessResources( parsePhaseBindings( (String) phases.get( "process-resources" ) ) );
+        binding.setCompile( parsePhaseBindings( (String) phases.get( "compile" ) ) );
+        binding.setProcessClasses( parsePhaseBindings( (String) phases.get( "process-classes" ) ) );
+        binding.setGenerateTestSources( parsePhaseBindings( (String) phases.get( "generate-test-sources" ) ) );
+        binding.setProcessTestSources( parsePhaseBindings( (String) phases.get( "process-test-sources" ) ) );
+        binding.setGenerateTestResources( parsePhaseBindings( (String) phases.get( "generate-test-resources" ) ) );
+        binding.setProcessTestResources( parsePhaseBindings( (String) phases.get( "process-test-resources" ) ) );
+        binding.setTestCompile( parsePhaseBindings( (String) phases.get( "test-compile" ) ) );
+        binding.setProcessTestClasses( parsePhaseBindings( (String) phases.get( "process-test-classes" ) ) );
+        binding.setTest( parsePhaseBindings( (String) phases.get( "test" ) ) );
+        binding.setPreparePackage( parsePhaseBindings( (String) phases.get( "prepare-package" ) ) );
+        binding.setCreatePackage( parsePhaseBindings( (String) phases.get( "package" ) ) );
+        binding.setPreIntegrationTest( parsePhaseBindings( (String) phases.get( "pre-integration-test" ) ) );
+        binding.setIntegrationTest( parsePhaseBindings( (String) phases.get( "integration-test" ) ) );
+        binding.setPostIntegrationTest( parsePhaseBindings( (String) phases.get( "post-integration-test" ) ) );
+        binding.setVerify( parsePhaseBindings( (String) phases.get( "verify" ) ) );
+        binding.setInstall( parsePhaseBindings( (String) phases.get( "install" ) ) );
+        binding.setDeploy( parsePhaseBindings( (String) phases.get( "deploy" ) ) );
+
+        return binding;
+    }
+
+    private static CleanBinding parseCleanBindings( Map phaseMappings )
+        throws LifecycleSpecificationException
+    {
+        CleanBinding binding = new CleanBinding();
+
+        binding.setPreClean( parsePhaseBindings( (String) phaseMappings.get( "pre-clean" ) ) );
+        binding.setClean( parsePhaseBindings( (String) phaseMappings.get( "clean" ) ) );
+        binding.setPostClean( parsePhaseBindings( (String) phaseMappings.get( "post-clean" ) ) );
+
+        return binding;
+    }
+
+    private static Phase parsePhaseBindings( String bindingList )
+        throws LifecycleSpecificationException
+    {
+        Phase phase = new Phase();
+
+        if ( bindingList != null )
+        {
+            for ( StringTokenizer tok = new StringTokenizer( bindingList, "," ); tok.hasMoreTokens(); )
+            {
+                String rawBinding = tok.nextToken().trim();
+
+                MojoBinding binding = parseMojoBinding( rawBinding, false );
+
+                if ( binding == null )
+                {
+                    continue;
+                }
+
+                phase.addBinding( binding );
+            }
+        }
+
+        return phase;
+    }
+
+    private static SiteBinding parseSiteBindings( Map phases )
+        throws LifecycleSpecificationException
+    {
+        SiteBinding binding = new SiteBinding();
+
+        binding.setPreSite( parsePhaseBindings( (String) phases.get( "pre-site" ) ) );
+        binding.setSite( parsePhaseBindings( (String) phases.get( "site" ) ) );
+        binding.setPostSite( parsePhaseBindings( (String) phases.get( "post-site" ) ) );
+
+        return binding;
+    }
+
+    private LegacyLifecycleMappingParser()
+    {
+    }
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/parser/LegacyLifecycleMappingParser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/parser/LegacyLifecycleMappingParser.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/parser/PrefixedMojoBinding.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/parser/PrefixedMojoBinding.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/parser/PrefixedMojoBinding.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/parser/PrefixedMojoBinding.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,21 @@
+package org.apache.maven.lifecycle.parser;
+
+import org.apache.maven.lifecycle.MojoBinding;
+
+public class PrefixedMojoBinding
+    extends MojoBinding
+{
+    
+    private String prefix;
+    
+    public void setPrefix( String prefix )
+    {
+        this.prefix = prefix;
+    }
+    
+    public String getPrefix()
+    {
+        return prefix;
+    }
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/parser/PrefixedMojoBinding.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/parser/PrefixedMojoBinding.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlan.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlan.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlan.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlan.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,21 @@
+package org.apache.maven.lifecycle.plan;
+
+import org.apache.maven.lifecycle.LifecycleBindings;
+
+public class DefaultLifecyclePlan
+    implements LifecyclePlan
+{
+
+    private final LifecycleBindings defaultBindings;
+    private final LifecycleBindings packagingBindings;
+    private final LifecycleBindings projectBindings;
+
+    public DefaultLifecyclePlan( LifecycleBindings defaultBindings, LifecycleBindings packagingBindings,
+                                 LifecycleBindings projectBindings )
+    {
+        this.defaultBindings = defaultBindings;
+        this.packagingBindings = packagingBindings;
+        this.projectBindings = projectBindings;
+    }
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlan.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlan.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlanner.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlanner.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlanner.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlanner.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,41 @@
+package org.apache.maven.lifecycle.plan;
+
+import org.apache.maven.lifecycle.LifecycleBindings;
+import org.apache.maven.lifecycle.LifecycleLoaderException;
+import org.apache.maven.lifecycle.LifecycleSpecificationException;
+import org.apache.maven.lifecycle.binding.LifecycleBindingManager;
+import org.apache.maven.plugin.PluginMappingManager;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.logging.LogEnabled;
+import org.codehaus.plexus.logging.Logger;
+
+import java.util.List;
+
+public class DefaultLifecyclePlanner
+    implements LifecyclePlanner, LogEnabled
+{
+
+    private Logger logger;
+
+    private PluginMappingManager pluginMappingManager;
+
+    private LifecycleBindingManager lifecycleBindingManager;
+
+    public LifecyclePlan constructLifecyclePlan( List tasks, MavenProject project )
+        throws LifecycleLoaderException, LifecycleSpecificationException
+    {
+        LifecycleBindings defaultBindings = lifecycleBindingManager.getDefaultBindings();
+        LifecycleBindings packagingBindings = lifecycleBindingManager.getBindingsForPackaging( project );
+        LifecycleBindings projectBindings = lifecycleBindingManager.getProjectCustomBindings( project );
+
+        LifecyclePlan plan = new DefaultLifecyclePlan( defaultBindings, packagingBindings, projectBindings );
+        
+        return plan;
+    }
+
+    public void enableLogging( Logger logger )
+    {
+        this.logger = logger;
+    }
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlanner.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlanner.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecyclePlan.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecyclePlan.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecyclePlan.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecyclePlan.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,6 @@
+package org.apache.maven.lifecycle.plan;
+
+public interface LifecyclePlan
+{
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecyclePlan.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecyclePlan.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecyclePlanner.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecyclePlanner.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecyclePlanner.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecyclePlanner.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,6 @@
+package org.apache.maven.lifecycle.plan;
+
+public interface LifecyclePlanner
+{
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecyclePlanner.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecyclePlanner.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,124 @@
+package org.apache.maven.plugin.loader;
+
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.context.BuildContextManager;
+import org.apache.maven.execution.SessionContext;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.InvalidPluginException;
+import org.apache.maven.plugin.PluginManager;
+import org.apache.maven.plugin.PluginManagerException;
+import org.apache.maven.plugin.PluginNotFoundException;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.plugin.version.PluginVersionNotFoundException;
+import org.apache.maven.plugin.version.PluginVersionResolutionException;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.logging.LogEnabled;
+import org.codehaus.plexus.logging.Logger;
+
+public class DefaultPluginLoader
+    implements PluginLoader, LogEnabled
+{
+
+    private Logger logger;
+
+    // FIXME: Move the functionality used from this into the PluginLoader when PluginManager refactor is complete.
+    PluginManager pluginManager;
+
+    BuildContextManager buildContextManager;
+
+    public Object loadPluginComponent( String role, String roleHint, Plugin plugin, MavenProject project )
+        throws ComponentLookupException, PluginLoaderException
+    {
+        loadPlugin( plugin, project );
+
+        try
+        {
+            return pluginManager.getPluginComponent( plugin, role, roleHint );
+        }
+        catch ( PluginManagerException e )
+        {
+            Throwable cause = e.getCause();
+
+            if ( cause != null && ( cause instanceof ComponentLookupException ) )
+            {
+                StringBuffer message = new StringBuffer();
+                message.append( "ComponentLookupException in PluginManager while looking up a component in the realm of: " );
+                message.append( plugin.getKey() );
+                message.append( ".\nReason: " );
+                message.append( cause.getMessage() );
+                message.append( "\n\nStack-Trace inside of PluginManager was:\n\n" );
+
+                StackTraceElement[] elements = e.getStackTrace();
+                for ( int i = 0; i < elements.length; i++ )
+                {
+                    if ( elements[i].getClassName().indexOf( "PluginManager" ) < 0 )
+                    {
+                        break;
+                    }
+
+                    message.append( elements[i] );
+                }
+
+                logger.debug( message.toString() + "\n" );
+
+                throw (ComponentLookupException) cause;
+            }
+            else
+            {
+                throw new PluginLoaderException( plugin, "Failed to lookup plugin component. Reason: " + e.getMessage(), e );
+            }
+        }
+    }
+
+    public PluginDescriptor loadPlugin( Plugin plugin, MavenProject project )
+        throws PluginLoaderException
+    {
+        SessionContext ctx = SessionContext.read( buildContextManager );
+
+        try
+        {
+            return pluginManager.verifyPlugin( plugin, project, ctx.getSession() );
+        }
+        catch ( ArtifactResolutionException e )
+        {
+            throw new PluginLoaderException( plugin, "Failed to load plugin. Reason: " + e.getMessage(), e );
+        }
+        catch ( ArtifactNotFoundException e )
+        {
+            throw new PluginLoaderException( plugin, "Failed to load plugin. Reason: " + e.getMessage(), e );
+        }
+        catch ( PluginNotFoundException e )
+        {
+            throw new PluginLoaderException( plugin, "Failed to load plugin. Reason: " + e.getMessage(), e );
+        }
+        catch ( PluginVersionResolutionException e )
+        {
+            throw new PluginLoaderException( plugin, "Failed to load plugin. Reason: " + e.getMessage(), e );
+        }
+        catch ( InvalidVersionSpecificationException e )
+        {
+            throw new PluginLoaderException( plugin, "Failed to load plugin. Reason: " + e.getMessage(), e );
+        }
+        catch ( InvalidPluginException e )
+        {
+            throw new PluginLoaderException( plugin, "Failed to load plugin. Reason: " + e.getMessage(), e );
+        }
+        catch ( PluginManagerException e )
+        {
+            throw new PluginLoaderException( plugin, "Failed to load plugin. Reason: " + e.getMessage(), e );
+        }
+        catch ( PluginVersionNotFoundException e )
+        {
+            throw new PluginLoaderException( plugin, "Failed to load plugin. Reason: " + e.getMessage(), e );
+        }
+    }
+
+    public void enableLogging( Logger logger )
+    {
+        this.logger = logger;
+    }
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoader.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoader.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoader.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoader.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,17 @@
+package org.apache.maven.plugin.loader;
+
+import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+
+public interface PluginLoader
+{
+
+    Object loadPluginComponent( String role, String roleHint, Plugin plugin, MavenProject project )
+        throws ComponentLookupException, PluginLoaderException;
+
+    PluginDescriptor loadPlugin( Plugin plugin, MavenProject project )
+        throws PluginLoaderException;
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoader.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoaderException.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoaderException.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoaderException.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoaderException.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,28 @@
+package org.apache.maven.plugin.loader;
+
+import org.apache.maven.model.Plugin;
+
+public class PluginLoaderException
+    extends Exception
+{
+
+    private final Plugin plugin;
+
+    public PluginLoaderException( Plugin plugin, String message, Throwable cause )
+    {
+        super( message, cause );
+        this.plugin = plugin;
+    }
+
+    public PluginLoaderException( Plugin plugin, String message )
+    {
+        super( message );
+        this.plugin = plugin;
+    }
+    
+    public Plugin getPlugin()
+    {
+        return plugin;
+    }
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoaderException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoaderException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/pom.xml?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/pom.xml (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/pom.xml Wed Mar  7 14:37:29 2007
@@ -0,0 +1,31 @@
+<?xml version="1.0"?><project>
+  <parent>
+    <artifactId>maven</artifactId>
+    <groupId>org.apache.maven</groupId>
+    <version>2.1-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>maven-lifecycle</artifactId>
+  <name>Maven Lifecycle Model</name>
+  
+  <dependencies>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.modello</groupId>
+        <artifactId>modello-maven-plugin</artifactId>
+        <configuration>
+          <version>1.0.0</version>
+          <model>src/main/mdo/maven-lifecycle.mdo</model>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/ClassLoaderXmlBindingLoader.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/ClassLoaderXmlBindingLoader.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/ClassLoaderXmlBindingLoader.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/ClassLoaderXmlBindingLoader.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,73 @@
+package org.apache.maven.lifecycle;
+
+import org.apache.maven.lifecycle.io.xpp3.LifecycleBindingsXpp3Reader;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URL;
+
+/**
+ * @author jdcasey
+ */
+public class ClassLoaderXmlBindingLoader
+    implements LifecycleBindingLoader
+{
+
+    // configuration.
+    private String path;
+
+    public LifecycleBindings getBindings()
+        throws LifecycleLoaderException, LifecycleSpecificationException
+    {
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        URL url = loader.getResource( getPath() );
+
+        if ( url == null )
+        {
+            throw new LifecycleLoaderException( "Classpath resource: " + getPath() + " could not be found." );
+        }
+
+        InputStreamReader reader;
+        try
+        {
+            reader = new InputStreamReader( url.openStream() );
+        }
+        catch ( IOException e )
+        {
+            throw new LifecycleLoaderException( "Failed to open stream for classpath resource: " + getPath() + ". Reason: "
+                + e.getMessage(), e );
+        }
+
+        LifecycleBindings bindings;
+        try
+        {
+            bindings = new LifecycleBindingsXpp3Reader().read( reader );
+        }
+        catch ( IOException e )
+        {
+            throw new LifecycleLoaderException( "Classpath resource: " + getPath() + " could not be read. Reason: "
+                + e.getMessage(), e );
+        }
+        catch ( XmlPullParserException e )
+        {
+            throw new LifecycleLoaderException( "Classpath resource: " + getPath() + " could not be parsed. Reason: "
+                + e.getMessage(), e );
+        }
+        
+        bindings.setOrigin( url.toExternalForm() );
+        
+        return bindings;
+    }
+
+    public String getPath()
+    {
+        return path;
+    }
+
+    public void setPath( String path )
+    {
+        this.path = path;
+    }
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/ClassLoaderXmlBindingLoader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/ClassLoaderXmlBindingLoader.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleBindingLoader.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleBindingLoader.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleBindingLoader.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleBindingLoader.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,11 @@
+package org.apache.maven.lifecycle;
+
+public interface LifecycleBindingLoader
+{
+    
+    String ROLE = LifecycleBindingLoader.class.getName();
+
+    LifecycleBindings getBindings()
+        throws LifecycleLoaderException, LifecycleSpecificationException;
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleBindingLoader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleBindingLoader.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleException.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleException.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleException.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleException.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,17 @@
+package org.apache.maven.lifecycle;
+
+public class LifecycleException
+    extends Exception
+{
+
+    public LifecycleException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+
+    public LifecycleException( String message )
+    {
+        super( message );
+    }
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleLoaderException.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleLoaderException.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleLoaderException.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleLoaderException.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,17 @@
+package org.apache.maven.lifecycle;
+
+public class LifecycleLoaderException
+    extends LifecycleException
+{
+
+    public LifecycleLoaderException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+
+    public LifecycleLoaderException( String message )
+    {
+        super( message );
+    }
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleLoaderException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleLoaderException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleSpecificationException.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleSpecificationException.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleSpecificationException.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleSpecificationException.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,17 @@
+package org.apache.maven.lifecycle;
+
+public class LifecycleSpecificationException
+    extends LifecycleException
+{
+
+    public LifecycleSpecificationException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+
+    public LifecycleSpecificationException( String message )
+    {
+        super( message );
+    }
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleSpecificationException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleSpecificationException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleWalker.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleWalker.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleWalker.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleWalker.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,81 @@
+package org.apache.maven.lifecycle;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+public class LifecycleWalker
+{
+    
+    private LifecycleWalker()
+    {
+    }
+
+    public static List getMojoBindings( String phaseName, LifecycleBinding lifecycle )
+        throws NoSuchPhaseException
+    {
+        List phaseNames = lifecycle.getPhaseBindingNamesInOrder();
+
+        int idx = phaseNames.indexOf( phaseName );
+
+        if ( idx < 0 )
+        {
+            throw new NoSuchPhaseException( phaseName, "Phase not found in lifecycle: " + lifecycle.getId() );
+        }
+
+        List phases = lifecycle.getPhaseBindingsInOrder();
+
+        List bindings = new ArrayList();
+        for ( int i = 0; i <= idx; i++ )
+        {
+            Phase phase = (Phase) phases.get( i );
+            List phaseBindings = phase.getBindings();
+
+            if ( phaseBindings != null && !phaseBindings.isEmpty() )
+            {
+                bindings.addAll( phaseBindings );
+            }
+        }
+
+        return bindings;
+    }
+
+    public static LifecycleBinding findLifecycleBindingsForPhase( String phaseName, LifecycleBindings lifecycles )
+        throws NoSuchLifecycleException
+    {
+        List lifecyclesAvailable = lifecycles.getMappingList();
+
+        for ( Iterator it = lifecyclesAvailable.iterator(); it.hasNext(); )
+        {
+            LifecycleBinding lifecycle = (LifecycleBinding) it.next();
+
+            if ( lifecycle.getPhaseBindingNamesInOrder().indexOf( phaseName ) > -1 )
+            {
+                return lifecycle;
+            }
+        }
+
+        throw new NoSuchLifecycleException( lifecycles.getPackaging(), "Phase not found in any lifecycle: " + phaseName );
+    }
+
+    public static void addMojoBinding( String phaseName, MojoBinding mojo, LifecycleBindings bindings )
+        throws LifecycleSpecificationException
+    {
+        LifecycleBinding binding = findLifecycleBindingsForPhase( phaseName, bindings );
+        
+        List phaseNames = binding.getPhaseBindingNamesInOrder();
+
+        int idx = phaseNames.indexOf( phaseName );
+
+        if ( idx < 0 )
+        {
+            throw new NoSuchPhaseException( phaseName, "Phase not found in lifecycle: " + binding.getId() );
+        }
+
+        List phases = binding.getPhaseBindingsInOrder();
+        
+        Phase phase = (Phase) phases.get( idx );
+        phase.addBinding( mojo );
+    }
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleWalker.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleWalker.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/NoSuchLifecycleException.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/NoSuchLifecycleException.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/NoSuchLifecycleException.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/NoSuchLifecycleException.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,26 @@
+package org.apache.maven.lifecycle;
+
+public class NoSuchLifecycleException
+    extends LifecycleSpecificationException
+{
+
+    private final String packaging;
+
+    public NoSuchLifecycleException( String packaging, String message, Throwable cause )
+    {
+        super( message, cause );
+        this.packaging = packaging;
+    }
+
+    public NoSuchLifecycleException( String phase, String message )
+    {
+        super( message );
+        this.packaging = phase;
+    }
+    
+    public String getPackaging()
+    {
+        return packaging;
+    }
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/NoSuchLifecycleException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/NoSuchLifecycleException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/NoSuchPhaseException.java
URL: http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/NoSuchPhaseException.java?view=auto&rev=515816
==============================================================================
--- maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/NoSuchPhaseException.java (added)
+++ maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/NoSuchPhaseException.java Wed Mar  7 14:37:29 2007
@@ -0,0 +1,26 @@
+package org.apache.maven.lifecycle;
+
+public class NoSuchPhaseException
+    extends LifecycleSpecificationException
+{
+
+    private final String phase;
+
+    public NoSuchPhaseException( String phase, String message, Throwable cause )
+    {
+        super( message, cause );
+        this.phase = phase;
+    }
+
+    public NoSuchPhaseException( String phase, String message )
+    {
+        super( message );
+        this.phase = phase;
+    }
+    
+    public String getPhase()
+    {
+        return phase;
+    }
+
+}

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/NoSuchPhaseException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/NoSuchPhaseException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"