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/10/13 02:11:02 UTC

svn commit: r584343 [1/3] - in /maven/components/trunk: ./ maven-core/src/main/java/org/apache/maven/ maven-core/src/main/java/org/apache/maven/execution/ maven-core/src/main/java/org/apache/maven/lifecycle/ maven-core/src/main/java/org/apache/maven/pl...

Author: jdcasey
Date: Fri Oct 12 17:10:29 2007
New Revision: 584343

URL: http://svn.apache.org/viewvc?rev=584343&view=rev
Log:
Cleaning up exception wrapping to allow better reporting of errors to end users. Also implementing the beginnings of a new error reporter, and bumping the version of plexus-container-default up to 1.0-alpha-33-SNAPSHOT to improve the accessibility to ClassRealm info for ComponentLookupException.

Added:
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/AggregatedBuildFailureException.java   (with props)
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/InvalidTaskException.java   (with props)
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/NoGoalsSpecifiedException.java   (with props)
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectBuildFailureException.java   (with props)
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectCycleException.java   (with props)
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/TaskValidationResult.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginContainerException.java   (with props)
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java   (with props)
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIRequestUtils.java   (with props)
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/PluginLookupException.java   (with props)
    maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/cli/CLIReportingUtilsTest.java   (with props)
    maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/cli/CLIRequestUtilsTest.java   (with props)
    maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/cli/TestEmbedderLogger.java   (with props)
Modified:
    maven/components/trunk/build.properties
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/BuildFailureException.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionResult.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutionException.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/InvalidPluginException.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManagerException.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginNotFoundException.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterException.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoaderException.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/PluginVersionResolutionException.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/reactor/MavenExecutionException.java
    maven/components/trunk/maven-embedder/pom.xml
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/MavenTools.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/DefaultProfileAdvisor.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/ProfileAdvisor.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DuplicateProjectException.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/InvalidProjectModelException.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuildingResult.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuildingException.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectUtils.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/InvalidDependencyVersionException.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java
    maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml
    maven/components/trunk/pom.xml

Modified: maven/components/trunk/build.properties
URL: http://svn.apache.org/viewvc/maven/components/trunk/build.properties?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/build.properties (original)
+++ maven/components/trunk/build.properties Fri Oct 12 17:10:29 2007
@@ -17,7 +17,7 @@
 
 classworlds.version=1.2-alpha-10
 plexus-active-collections.version=1.0-beta-1
-plexus.version=1.0-alpha-32
+plexus.version=1.0-alpha-33-SNAPSHOT
 plexus-utils.version=1.4.5
 maven-artifact.version=3.0-SNAPSHOT
 commons-cli.version=1.0

Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/AggregatedBuildFailureException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/AggregatedBuildFailureException.java?rev=584343&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/AggregatedBuildFailureException.java (added)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/AggregatedBuildFailureException.java Fri Oct 12 17:10:29 2007
@@ -0,0 +1,50 @@
+package org.apache.maven;
+
+import org.apache.maven.lifecycle.MojoBindingUtils;
+import org.apache.maven.lifecycle.model.MojoBinding;
+import org.apache.maven.plugin.MojoFailureException;
+
+/**
+ * Exception which occurs when an @aggregator plugin fails to execute. This
+ * exception is meant to wrap a {@link MojoFailureException}, and provide
+ * additional details about the mojo that failed, via {@link MojoBinding} and
+ * the root directory in which the build executes.
+ *
+ * @author jdcasey
+ *
+ */
+public class AggregatedBuildFailureException
+    extends BuildFailureException
+{
+
+    private final String executionRootDirectory;
+    private final MojoBinding binding;
+
+    public AggregatedBuildFailureException( String executionRootDirectory,
+                                            MojoBinding binding,
+                                            MojoFailureException cause )
+    {
+        super( "Build in root directory: " + executionRootDirectory
+               + " failed during execution of aggregator mojo: "
+               + MojoBindingUtils.toString( binding ), cause );
+
+        this.executionRootDirectory = executionRootDirectory;
+        this.binding = binding;
+    }
+
+    public MojoFailureException getMojoFailureException()
+    {
+        return (MojoFailureException) getCause();
+    }
+
+    public String getExecutionRootDirectory()
+    {
+        return executionRootDirectory;
+    }
+
+    public MojoBinding getBinding()
+    {
+        return binding;
+    }
+
+}

Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/AggregatedBuildFailureException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/AggregatedBuildFailureException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/BuildFailureException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/BuildFailureException.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/BuildFailureException.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/BuildFailureException.java Fri Oct 12 17:10:29 2007
@@ -1,5 +1,6 @@
 package org.apache.maven;
 
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -25,15 +26,15 @@
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @version $Id$
  */
-public class BuildFailureException
+public abstract class BuildFailureException
     extends Exception
 {
-    public BuildFailureException( String message )
+    protected BuildFailureException( String message )
     {
         super( message );
     }
 
-    public BuildFailureException( String message, Throwable cause )
+    protected BuildFailureException( String message, Throwable cause )
     {
         super( message, cause );
     }

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java Fri Oct 12 17:10:29 2007
@@ -42,7 +42,6 @@
 import org.apache.maven.monitor.event.EventDispatcher;
 import org.apache.maven.monitor.event.MavenEvents;
 import org.apache.maven.profiles.ProfileManager;
-import org.apache.maven.profiles.activation.ProfileActivationException;
 import org.apache.maven.project.DuplicateProjectException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
@@ -117,10 +116,14 @@
                 request.setProjectPresent( false );
             }
         }
-        catch ( Exception e )
+        catch ( ProjectBuildingException e )
         {
-            result.addException( e );
-
+            result.addProjectBuildingException( e );
+            return null;
+        }
+        catch ( MavenExecutionException e )
+        {
+            result.addMavenExecutionException( e );
             return null;
         }
 
@@ -136,19 +139,18 @@
         }
         catch ( CycleDetectedException e )
         {
-            result.addException(
-                new BuildFailureException(
-                    "The projects in the reactor contain a cyclic reference: " + e.getMessage(),
-                    e ) );
+            String message = "The projects in the reactor contain a cyclic reference: "
+                             + e.getMessage();
+
+            ProjectCycleException error = new ProjectCycleException( projects, message, e );
+
+            result.addBuildFailureException( error );
 
             return null;
         }
         catch ( DuplicateProjectException e )
         {
-            result.addException(
-                new BuildFailureException(
-                    e.getMessage(),
-                    e ) );
+            result.addDuplicateProjectException( e );
 
             return null;
         }
@@ -192,7 +194,7 @@
 
             if ( !tvr.isTaskValid() )
             {
-                result.addException( new BuildFailureException( tvr.getMessage() ) );
+                result.addBuildFailureException( new InvalidTaskException( tvr ) );
 
                 return result;
             }
@@ -223,12 +225,12 @@
         }
         catch ( LifecycleExecutionException e )
         {
-            result.addException( e );
+            result.addLifecycleExecutionException( e );
             return result;
         }
         catch ( BuildFailureException e )
         {
-            result.addException( e );
+            result.addBuildFailureException( e );
             return result;
         }
 
@@ -258,7 +260,7 @@
     }
 
     private List getProjects( MavenExecutionRequest request )
-        throws MavenExecutionException, BuildFailureException
+        throws MavenExecutionException
     {
         List projects;
 
@@ -298,10 +300,6 @@
         {
             throw new MavenExecutionException( e.getMessage(), e );
         }
-        catch ( ProfileActivationException e )
-        {
-            throw new MavenExecutionException( e.getMessage(), e );
-        }
         return projects;
     }
 
@@ -310,8 +308,7 @@
                                   boolean recursive,
                                   ProfileManager globalProfileManager,
                                   boolean isRoot )
-        throws ArtifactResolutionException, ProjectBuildingException, ProfileActivationException,
-        MavenExecutionException, BuildFailureException
+        throws ArtifactResolutionException, ProjectBuildingException, MavenExecutionException
     {
         List projects = new ArrayList( files.size() );
 
@@ -341,7 +338,7 @@
 
                 if ( runtimeInformation.getApplicationVersion().compareTo( version ) < 0 )
                 {
-                    throw new BuildFailureException(
+                    throw new MavenExecutionException(
                         "Unable to build project '" + project.getFile() +
                             "; it requires Maven version " + version.toString() );
                 }
@@ -396,13 +393,9 @@
                     moduleFiles.add( moduleFile );
                 }
 
-                List collectedProjects =
-                    collectProjects(
-                        moduleFiles,
-                        localRepository,
-                        recursive,
-                        globalProfileManager,
-                        false );
+                List collectedProjects = collectProjects( moduleFiles, localRepository, recursive,
+                                                          globalProfileManager, false );
+
                 projects.addAll( collectedProjects );
                 project.setCollectedProjects( collectedProjects );
             }

Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/InvalidTaskException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/InvalidTaskException.java?rev=584343&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/InvalidTaskException.java (added)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/InvalidTaskException.java Fri Oct 12 17:10:29 2007
@@ -0,0 +1,31 @@
+package org.apache.maven;
+
+import org.apache.maven.lifecycle.TaskValidationResult;
+
+/**
+ * Exception which occurs when a task or goal is specified on the command line
+ * but cannot be resolved for execution. This validation is done up front, and
+ * this exception wraps the {@link TaskValidationResult} generated as a result
+ * of verifying the task.
+ *
+ * @author jdcasey
+ *
+ */
+public class InvalidTaskException
+    extends BuildFailureException
+{
+
+    private final String task;
+
+    public InvalidTaskException( TaskValidationResult result )
+    {
+        super( result.getMessage(), result.getCause() );
+        task = result.getInvalidTask();
+    }
+
+    public String getTask()
+    {
+        return task;
+    }
+
+}

Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/InvalidTaskException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/InvalidTaskException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/NoGoalsSpecifiedException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/NoGoalsSpecifiedException.java?rev=584343&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/NoGoalsSpecifiedException.java (added)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/NoGoalsSpecifiedException.java Fri Oct 12 17:10:29 2007
@@ -0,0 +1,20 @@
+package org.apache.maven;
+
+/**
+ * Exception indicating that Maven has no instructions for what to execute. This
+ * happens when no goals are specified on the command line, and there is no
+ * defaultGoal specified in the POM itself.
+ *
+ * @author jdcasey
+ *
+ */
+public class NoGoalsSpecifiedException
+    extends BuildFailureException
+{
+
+    public NoGoalsSpecifiedException( String message )
+    {
+        super( message );
+    }
+
+}

Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/NoGoalsSpecifiedException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/NoGoalsSpecifiedException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectBuildFailureException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectBuildFailureException.java?rev=584343&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectBuildFailureException.java (added)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectBuildFailureException.java Fri Oct 12 17:10:29 2007
@@ -0,0 +1,50 @@
+package org.apache.maven;
+
+import org.apache.maven.lifecycle.MojoBindingUtils;
+import org.apache.maven.lifecycle.model.MojoBinding;
+import org.apache.maven.plugin.MojoFailureException;
+
+/**
+ * Exception which occurs when a normal (i.e. non-aggregator) mojo fails to
+ * execute. In this case, the mojo failed while executing against a particular
+ * project instance, so we can wrap the {@link MojoFailureException} with context
+ * information including projectId and the {@link MojoBinding} that caused the
+ * failure.
+ *
+ * @author jdcasey
+ *
+ */
+public class ProjectBuildFailureException
+    extends BuildFailureException
+{
+
+    private final String projectId;
+    private final MojoBinding binding;
+
+    public ProjectBuildFailureException( String projectId,
+                                         MojoBinding binding,
+                                         MojoFailureException cause )
+    {
+        super( "Build for project: " + projectId + " failed during execution of mojo: "
+               + MojoBindingUtils.toString( binding ), cause );
+
+        this.projectId = projectId;
+        this.binding = binding;
+    }
+
+    public MojoFailureException getMojoFailureException()
+    {
+        return (MojoFailureException) getCause();
+    }
+
+    public String getProjectId()
+    {
+        return projectId;
+    }
+
+    public MojoBinding getBinding()
+    {
+        return binding;
+    }
+
+}

Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectBuildFailureException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectBuildFailureException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectCycleException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectCycleException.java?rev=584343&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectCycleException.java (added)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectCycleException.java Fri Oct 12 17:10:29 2007
@@ -0,0 +1,37 @@
+package org.apache.maven;
+
+import org.apache.maven.execution.ReactorManager;
+import org.apache.maven.project.ProjectSorter;
+import org.codehaus.plexus.util.dag.CycleDetectedException;
+
+import java.util.List;
+
+/**
+ * Exception which occurs when creating a new {@link ReactorManager} instance,
+ * due to failure to sort the current projects. The embedded {@link CycleDetectedException}
+ * is thrown by the {@link ProjectSorter}, and context of this wrapped exception
+ * includes the list of projects that contain the cycle, along with a friendly
+ * rendering of the cycle message indicating that it comes from the current projects list.
+ *
+ * @author jdcasey
+ *
+ */
+public class ProjectCycleException
+    extends BuildFailureException
+{
+
+    private final List projects;
+
+    public ProjectCycleException( List projects, String message,
+                                  CycleDetectedException cause )
+    {
+        super( message, cause );
+        this.projects = projects;
+    }
+
+    public List getProjects()
+    {
+        return projects;
+    }
+
+}

Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectCycleException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectCycleException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java Fri Oct 12 17:10:29 2007
@@ -19,8 +19,13 @@
  * under the License.
  */
 
+import org.apache.maven.BuildFailureException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
+import org.apache.maven.lifecycle.LifecycleExecutionException;
+import org.apache.maven.project.DuplicateProjectException;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.reactor.MavenExecutionException;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -80,7 +85,49 @@
         return exceptions;
     }
 
-    public MavenExecutionResult addException( Throwable t )
+    public MavenExecutionResult addProjectBuildingException( ProjectBuildingException e )
+    {
+        addException( e );
+
+        return this;
+    }
+
+    public MavenExecutionResult addMavenExecutionException( MavenExecutionException e )
+    {
+        addException( e );
+
+        return this;
+    }
+
+    public MavenExecutionResult addBuildFailureException( BuildFailureException e )
+    {
+        addException( e );
+
+        return this;
+    }
+
+    public MavenExecutionResult addDuplicateProjectException( DuplicateProjectException e )
+    {
+        addException( e );
+
+        return this;
+    }
+
+    public MavenExecutionResult addLifecycleExecutionException( LifecycleExecutionException e )
+    {
+        addException( e );
+
+        return this;
+    }
+
+    public MavenExecutionResult addUnknownException( Throwable t )
+    {
+        addException( t );
+
+        return this;
+    }
+
+    private void addException( Throwable t )
     {
         if ( exceptions == null )
         {
@@ -88,13 +135,11 @@
         }
 
         exceptions.add( t );
-
-        return this;
     }
 
     public boolean hasExceptions()
     {
-        return (exceptions != null && exceptions.size() > 0 );
+        return (( exceptions != null ) && ( exceptions.size() > 0 ) );
     }
 
     public ReactorManager getReactorManager()

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionResult.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionResult.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionResult.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionResult.java Fri Oct 12 17:10:29 2007
@@ -19,8 +19,13 @@
  * under the License.
  */
 
+import org.apache.maven.BuildFailureException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
+import org.apache.maven.lifecycle.LifecycleExecutionException;
+import org.apache.maven.project.DuplicateProjectException;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.reactor.MavenExecutionException;
 
 import java.util.List;
 
@@ -47,6 +52,13 @@
     // - invalid project model exception: list of markers
     // - xmlpull parser exception
     List getExceptions();
-    MavenExecutionResult addException( Throwable t );
+
+    MavenExecutionResult addLifecycleExecutionException( LifecycleExecutionException e );
+    MavenExecutionResult addDuplicateProjectException( DuplicateProjectException duplicateProjectException );
+    MavenExecutionResult addBuildFailureException( BuildFailureException buildFailureException );
+    MavenExecutionResult addMavenExecutionException( MavenExecutionException e );
+    MavenExecutionResult addProjectBuildingException (ProjectBuildingException e );
+    MavenExecutionResult addUnknownException( Throwable t );
+
     boolean hasExceptions();
 }

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Fri Oct 12 17:10:29 2007
@@ -19,12 +19,14 @@
  * under the License.
  */
 
+import org.apache.maven.AggregatedBuildFailureException;
 import org.apache.maven.BuildFailureException;
+import org.apache.maven.NoGoalsSpecifiedException;
+import org.apache.maven.ProjectBuildFailureException;
 import org.apache.maven.artifact.handler.ArtifactHandler;
 import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
 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.MavenSession;
 import org.apache.maven.execution.ReactorManager;
@@ -101,6 +103,7 @@
      * @param session
      * @param reactorManager
      * @param dispatcher
+     * @throws MojoFailureException
      */
     public void execute( final MavenSession session,
                          final ReactorManager reactorManager,
@@ -125,7 +128,7 @@
 
         if ( goals.isEmpty() )
         {
-            throw new BuildFailureException( "You must specify at least one goal. Try 'install'" );
+            throw new NoGoalsSpecifiedException( "You must specify at least one goal. Try 'install'" );
         }
 
         List taskSegments = segmentTaskListByAggregationNeeds(
@@ -143,7 +146,7 @@
         catch ( PluginNotFoundException e )
         {
             throw new LifecycleExecutionException(
-                e.getMessage(),
+                "Plugin could not be not found while searching for artifact-type handlers.",
                 e );
         }
 
@@ -210,14 +213,31 @@
                     {
                         MojoBinding binding = (MojoBinding) mojoIterator.next();
 
-                        executeGoalAndHandleFailures(
-                            binding,
-                            session,
-                            dispatcher,
-                            event,
-                            reactorManager,
-                            buildStartTime,
-                            target );
+                        try
+                        {
+                            executeGoalAndHandleFailures(
+                                binding,
+                                session,
+                                dispatcher,
+                                event,
+                                reactorManager,
+                                buildStartTime,
+                                target );
+                        }
+                        catch ( MojoFailureException e )
+                        {
+                            AggregatedBuildFailureException error = new AggregatedBuildFailureException(
+                                                                                                         session.getExecutionRootDirectory(),
+                                                                                                         binding,
+                                                                                                         e );
+
+                            dispatcher.dispatchError( event, target, error );
+
+                            if ( handleExecutionFailure( reactorManager, rootProject, error, binding, buildStartTime ) )
+                            {
+                                throw error;
+                            }
+                        }
                     }
 
                     // clean up the execution context, so we don't pollute for future project-executions.
@@ -285,19 +305,32 @@
 
                         for ( Iterator mojoIterator = mojoBindings.iterator(); mojoIterator.hasNext(); )
                         {
-                            MojoBinding mojoBinding = (MojoBinding) mojoIterator.next();
+                            MojoBinding binding = (MojoBinding) mojoIterator.next();
 
                             getLogger().debug(
-                                "Mojo: " + mojoBinding.getGoal() + " has config:\n"
-                                    + mojoBinding.getConfiguration() );
-                            executeGoalAndHandleFailures(
-                                mojoBinding,
-                                session,
-                                dispatcher,
-                                event,
-                                reactorManager,
-                                buildStartTime,
-                                target );
+                                "Mojo: " + binding.getGoal() + " has config:\n"
+                                    + binding.getConfiguration() );
+
+                            try
+                            {
+                                executeGoalAndHandleFailures( binding, session, dispatcher,
+                                                              event, reactorManager,
+                                                              buildStartTime, target );
+                            }
+                            catch ( MojoFailureException e )
+                            {
+                                ProjectBuildFailureException error = new ProjectBuildFailureException(
+                                                                                                       currentProject.getId(),
+                                                                                                       binding,
+                                                                                                       e );
+
+                                dispatcher.dispatchError( event, target, error );
+
+                                if ( handleExecutionFailure( reactorManager, currentProject, error, binding, buildStartTime ) )
+                                {
+                                    throw error;
+                                }
+                            }
                         }
 
                         LifecycleExecutionContext.delete( buildContextManager );
@@ -373,7 +406,7 @@
                                                final ReactorManager rm,
                                                final long buildStartTime,
                                                final String target )
-        throws BuildFailureException, LifecycleExecutionException
+        throws LifecycleExecutionException, MojoFailureException
     {
         // NEW: Retrieve/use the current project stored in the execution context, for consistency.
         LifecycleExecutionContext ctx = LifecycleExecutionContext.read( buildContextManager );
@@ -446,12 +479,6 @@
                         e.getMessage(),
                         e );
                 }
-                catch ( MojoFailureException e )
-                {
-                    throw new BuildFailureException(
-                        e.getMessage(),
-                        e );
-                }
                 catch ( MojoExecutionException e )
                 {
                     throw new LifecycleExecutionException(
@@ -474,34 +501,9 @@
         }
         catch ( LifecycleExecutionException e )
         {
-            dispatcher.dispatchError(
-                event,
-                target,
-                e );
+            dispatcher.dispatchError( event, target, e );
 
-            if ( handleExecutionFailure(
-                rm,
-                project,
-                e,
-                mojoBinding,
-                buildStartTime ) )
-            {
-                throw e;
-            }
-        }
-        catch ( BuildFailureException e )
-        {
-            dispatcher.dispatchError(
-                event,
-                target,
-                e );
-
-            if ( handleExecutionFailure(
-                rm,
-                project,
-                e,
-                mojoBinding,
-                buildStartTime ) )
+            if ( handleExecutionFailure( rm, project, e, mojoBinding, buildStartTime ) )
             {
                 throw e;
             }
@@ -542,13 +544,13 @@
 
         if ( rootProject != null )
         {
+
             if ( !LifecycleUtils.isValidPhaseName( task ) )
             {
-                MojoDescriptor mojo = null;
                 // definitely a CLI goal, can use prefix
                 try
                 {
-                    mojo = getMojoDescriptorForDirectInvocation(
+                    getMojoDescriptorForDirectInvocation(
                         task,
                         session,
                         rootProject );
@@ -595,7 +597,6 @@
     private List segmentTaskListByAggregationNeeds( final List tasks,
                                                     final MavenSession session,
                                                     final MavenProject rootProject )
-        throws LifecycleExecutionException, BuildFailureException
     {
         List segments = new ArrayList();
 
@@ -777,12 +778,6 @@
                 e );
         }
         catch ( PluginVersionResolutionException e )
-        {
-            throw new LifecycleExecutionException(
-                e.getMessage(),
-                e );
-        }
-        catch ( InvalidVersionSpecificationException e )
         {
             throw new LifecycleExecutionException(
                 e.getMessage(),

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutionException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutionException.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutionException.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutionException.java Fri Oct 12 17:10:29 2007
@@ -1,5 +1,18 @@
 package org.apache.maven.lifecycle;
 
+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.plugin.InvalidPluginException;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.PluginConfigurationException;
+import org.apache.maven.plugin.PluginManagerException;
+import org.apache.maven.plugin.PluginNotFoundException;
+import org.apache.maven.plugin.loader.PluginLoaderException;
+import org.apache.maven.plugin.version.PluginVersionNotFoundException;
+import org.apache.maven.plugin.version.PluginVersionResolutionException;
+import org.apache.maven.project.artifact.InvalidDependencyVersionException;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -31,13 +44,82 @@
         super( message );
     }
 
-    public LifecycleExecutionException( Throwable cause )
+    public LifecycleExecutionException( String message,
+                                        PluginManagerException cause )
+    {
+        super( message, cause );
+    }
+
+    public LifecycleExecutionException( String message,
+                                        PluginNotFoundException cause )
+    {
+        super( message, cause );
+    }
+
+    public LifecycleExecutionException( String message,
+                                        PluginVersionResolutionException cause )
+    {
+        super( message, cause );
+    }
+
+    public LifecycleExecutionException( String message,
+                                        InvalidVersionSpecificationException cause )
+    {
+        super( message, cause );
+    }
+
+    public LifecycleExecutionException( String message,
+                                        InvalidPluginException cause )
+    {
+        super( message, cause );
+    }
+
+    public LifecycleExecutionException( String message,
+                                        ArtifactNotFoundException cause )
     {
-        super( cause );
+        super( message, cause );
     }
 
-    public LifecycleExecutionException( String message, Throwable cause )
+    public LifecycleExecutionException( String message,
+                                        ArtifactResolutionException cause )
     {
         super( message, cause );
     }
+
+    public LifecycleExecutionException( String message,
+                                        PluginLoaderException cause )
+    {
+        super( message, cause );
+    }
+
+    public LifecycleExecutionException( String message,
+                                        LifecycleException cause )
+    {
+        super( message, cause );
+    }
+
+    public LifecycleExecutionException( String message,
+                                        InvalidDependencyVersionException cause )
+    {
+        super( message, cause );
+    }
+
+    public LifecycleExecutionException( String message,
+                                        MojoExecutionException cause )
+    {
+        super( message, cause );
+    }
+
+    public LifecycleExecutionException( String message,
+                                        PluginConfigurationException cause )
+    {
+        super( message, cause );
+    }
+
+    public LifecycleExecutionException( String message,
+                                        PluginVersionNotFoundException cause )
+    {
+        super( message, cause );
+    }
+
 }

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java Fri Oct 12 17:10:29 2007
@@ -20,10 +20,10 @@
  */
 
 import org.apache.maven.BuildFailureException;
-import org.apache.maven.project.MavenProject;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.execution.ReactorManager;
 import org.apache.maven.monitor.event.EventDispatcher;
+import org.apache.maven.project.MavenProject;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
@@ -33,7 +33,7 @@
 {
     String ROLE = LifecycleExecutor.class.getName();
 
-    TaskValidationResult isTaskValid( String task, MavenSession session, MavenProject rootProject );        
+    TaskValidationResult isTaskValid( String task, MavenSession session, MavenProject rootProject );
 
     void execute( MavenSession session, ReactorManager rm, EventDispatcher dispatcher )
         throws LifecycleExecutionException, BuildFailureException;

Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/TaskValidationResult.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/TaskValidationResult.java?rev=584343&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/TaskValidationResult.java (added)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/TaskValidationResult.java Fri Oct 12 17:10:29 2007
@@ -0,0 +1,48 @@
+package org.apache.maven.lifecycle;
+
+/** @author Jason van Zyl */
+public class TaskValidationResult
+{
+    private String invalidTask;
+
+    private Throwable cause;
+
+    private String message;
+
+    public TaskValidationResult()
+    {
+    }
+
+    public TaskValidationResult( String invalidTask, String message )
+    {
+        this.invalidTask = invalidTask;
+        this.message = message;
+    }
+
+    public TaskValidationResult( String invalidTask, String message, Throwable cause )
+    {
+        this.message = message;
+        this.cause = cause;
+        this.invalidTask = invalidTask;
+    }
+
+    public String getInvalidTask()
+    {
+        return invalidTask;
+    }
+
+    public String getMessage()
+    {
+        return message;
+    }
+
+    public Throwable getCause()
+    {
+        return cause;
+    }
+
+    public boolean isTaskValid()
+    {
+        return invalidTask == null;
+    }
+}

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Fri Oct 12 17:10:29 2007
@@ -166,7 +166,7 @@
                                           MavenProject project,
                                           MavenSession session )
         throws ArtifactResolutionException, PluginVersionResolutionException,
-        ArtifactNotFoundException, InvalidVersionSpecificationException, InvalidPluginException,
+        ArtifactNotFoundException, InvalidPluginException,
         PluginManagerException, PluginNotFoundException, PluginVersionNotFoundException
     {
         // TODO: this should be possibly outside
@@ -187,7 +187,7 @@
                                                     MavenProject project,
                                                     MavenSession session )
         throws PluginVersionResolutionException, ArtifactNotFoundException,
-        ArtifactResolutionException, InvalidVersionSpecificationException, InvalidPluginException,
+        ArtifactResolutionException, InvalidPluginException,
         PluginManagerException, PluginNotFoundException
     {
         ArtifactRepository localRepository = session.getLocalRepository();
@@ -199,7 +199,7 @@
                                                     MavenProject project,
                                                     ArtifactRepository localRepository )
         throws PluginVersionResolutionException, ArtifactNotFoundException,
-        ArtifactResolutionException, InvalidVersionSpecificationException, InvalidPluginException,
+        ArtifactResolutionException, InvalidPluginException,
         PluginManagerException, PluginNotFoundException
     {
         getLogger().debug( "In verifyVersionedPlugin for: " + plugin.getKey() );
@@ -213,7 +213,15 @@
             // if the groupId is internal, don't try to resolve it...
             if ( !RESERVED_GROUP_IDS.contains( plugin.getGroupId() ) )
             {
-                VersionRange versionRange = VersionRange.createFromVersionSpec( plugin.getVersion() );
+                VersionRange versionRange;
+                try
+                {
+                    versionRange = VersionRange.createFromVersionSpec( plugin.getVersion() );
+                }
+                catch ( InvalidVersionSpecificationException e )
+                {
+                    throw new PluginManagerException( plugin, e );
+                }
 
                 List remoteRepositories = new ArrayList();
 
@@ -257,12 +265,12 @@
 
             if ( ( groupId == null ) || ( artifactId == null ) || ( version == null ) )
             {
-                throw new PluginNotFoundException( e );
+                throw new PluginNotFoundException( plugin, e );
             }
             else if ( groupId.equals( e.getGroupId() ) && artifactId.equals( e.getArtifactId() )
                       && version.equals( e.getVersion() ) && "maven-plugin".equals( e.getType() ) )
             {
-                throw new PluginNotFoundException( e );
+                throw new PluginNotFoundException( plugin, e );
             }
             else
             {
@@ -412,12 +420,12 @@
 
             componentRealm = container.createComponentRealm( projectPlugin.getKey(), jars );
 
+            String parentRealmId = componentRealm.getParentRealm().getId();
+
             // adding for MNG-3012 to try to work around problems with Xpp3Dom (from plexus-utils)
             // spawning a ClassCastException when a mojo calls plugin.getConfiguration() from maven-model...
-            componentRealm.importFrom( componentRealm.getParentRealm().getId(),
-                                       Xpp3Dom.class.getName() );
-            componentRealm.importFrom( componentRealm.getParentRealm().getId(),
-                                       "org.codehaus.plexus.util.xml.pull" );
+            componentRealm.importFrom( parentRealmId, Xpp3Dom.class.getName() );
+            componentRealm.importFrom( parentRealmId, "org.codehaus.plexus.util.xml.pull" );
 
             // Adding for MNG-2878, since maven-reporting-impl was removed from the
             // internal list of artifacts managed by maven, the classloader is different
@@ -425,17 +433,17 @@
             // is not available from the AbstractMavenReport since it uses:
             // getClass().getResourceAsStream( "/default-report.xml" )
             // (maven-reporting-impl version 2.0; line 134; affects: checkstyle plugin, and probably others)
-            componentRealm.importFrom( componentRealm.getParentRealm().getId(), "/default-report.xml" );
+            componentRealm.importFrom( parentRealmId, "/default-report.xml" );
         }
         catch ( PlexusContainerException e )
         {
-            throw new PluginManagerException( "Failed to create realm for plugin '" + projectPlugin
+            throw new PluginContainerException( plugin, componentRealm, "Failed to create realm for plugin '" + projectPlugin
                                               + ".", e );
         }
         catch ( NoSuchRealmException e )
         {
-            throw new PluginManagerException(
-                                              "Failed to import Xpp3Dom from parent realm for plugin: '"
+            throw new PluginContainerException( plugin, componentRealm,
+                                              "Failed to import Xpp3Dom from core realm for plugin: '"
                                                               + projectPlugin + ".", e );
         }
 
@@ -716,7 +724,7 @@
                                                 MavenProject project,
                                                 MavenSession session )
         throws PluginVersionResolutionException, ArtifactResolutionException,
-        ArtifactNotFoundException, InvalidVersionSpecificationException, InvalidPluginException,
+        ArtifactNotFoundException, InvalidPluginException,
         PluginManagerException, PluginNotFoundException, PluginVersionNotFoundException
     {
         String version = reportPlugin.getVersion();
@@ -759,72 +767,81 @@
 
         Mojo plugin;
 
-        try
-        {
-            ClassRealm realm = mojoDescriptor.getPluginDescriptor().getClassRealm();
+        ClassRealm realm = mojoDescriptor.getPluginDescriptor().getClassRealm();
 
-            // We are forcing the use of the plugin realm for all lookups that might occur during
-            // the lifecycle that is part of the lookup. Here we are specifically trying to keep
-            // lookups that occur in contextualize calls in line with the right realm.
+        // We are forcing the use of the plugin realm for all lookups that might occur during
+        // the lifecycle that is part of the lookup. Here we are specifically trying to keep
+        // lookups that occur in contextualize calls in line with the right realm.
 
-            if ( realm != null )
-            {
-                ClassRealm oldRealm = container.setLookupRealm( realm );
+        if ( realm != null )
+        {
+            ClassRealm oldRealm = container.setLookupRealm( realm );
 
-                getLogger().debug(
-                                   "Looking up mojo " + mojoDescriptor.getRoleHint() + " in realm "
-                                                   + realm.getId() + " - descRealmId="
-                                                   + mojoDescriptor.getRealmId() );
+            getLogger().debug(
+                               "Looking up mojo " + mojoDescriptor.getRoleHint() + " in realm "
+                                               + realm.getId() + " - descRealmId="
+                                               + mojoDescriptor.getRealmId() );
 
+            try
+            {
                 plugin = (Mojo) container.lookup( Mojo.ROLE, mojoDescriptor.getRoleHint(), realm );
+            }
+            catch ( ComponentLookupException e )
+            {
+                throw new PluginContainerException( mojoDescriptor, realm, "Unable to find the mojo '"
+                                                  + mojoDescriptor.getRoleHint() + "' in the plugin '"
+                                                  + pluginDescriptor.getPluginLookupKey() + "'", e );
+            }
 
-                if ( plugin != null )
-                {
-                    getLogger().debug(
-                                       "Looked up - " + plugin + " - "
-                                                       + plugin.getClass().getClassLoader() );
-                }
-                else
-                {
-                    getLogger().warn( "No luck." );
-                }
-
-                container.setLookupRealm( oldRealm );
+            if ( plugin != null )
+            {
+                getLogger().debug(
+                                   "Looked up - " + plugin + " - "
+                                                   + plugin.getClass().getClassLoader() );
             }
             else
             {
-                getLogger().info(
-                                  "Looking up mojo " + mojoDescriptor.getRoleHint()
-                                                  + " in default realm "
-                                                  + container.getLookupRealm() + " - descRealmId="
-                                                  + mojoDescriptor.getRealmId() );
-
-                plugin = (Mojo) container.lookup( Mojo.ROLE, mojoDescriptor.getRoleHint() );
+                getLogger().warn( "No luck." );
+            }
 
-                if ( plugin != null )
-                {
-                    getLogger().info(
-                                      "Looked up - " + plugin + " - "
-                                                      + plugin.getClass().getClassLoader() );
-                }
-                else
-                {
-                    getLogger().warn( "No luck." );
-                }
+            container.setLookupRealm( oldRealm );
+        }
+        else
+        {
+            getLogger().info(
+                              "Looking up mojo " + mojoDescriptor.getRoleHint()
+                                              + " in default realm "
+                                              + container.getLookupRealm() + " - descRealmId="
+                                              + mojoDescriptor.getRealmId() );
 
+            try
+            {
+                plugin = (Mojo) container.lookup( Mojo.ROLE, mojoDescriptor.getRoleHint() );
+            }
+            catch ( ComponentLookupException e )
+            {
+                throw new PluginContainerException( mojoDescriptor, container.getContainerRealm(), "Unable to find the mojo '"
+                                                  + mojoDescriptor.getRoleHint() + "' in the plugin '"
+                                                  + pluginDescriptor.getPluginLookupKey() + "' (using core class realm)", e );
             }
 
-            if ( report && !( plugin instanceof MavenReport ) )
+            if ( plugin != null )
+            {
+                getLogger().info(
+                                  "Looked up - " + plugin + " - "
+                                                  + plugin.getClass().getClassLoader() );
+            }
+            else
             {
-                // TODO: the mojoDescriptor should actually capture this information so we don't get this far
-                return null;
+                getLogger().warn( "No luck." );
             }
+
         }
-        catch ( ComponentLookupException e )
+
+        if ( report && !( plugin instanceof MavenReport ) )
         {
-            throw new PluginManagerException( "Unable to find the mojo '"
-                                              + mojoDescriptor.getRoleHint() + "' in the plugin '"
-                                              + pluginDescriptor.getPluginLookupKey() + "'", e );
+            // TODO: the mojoDescriptor should actually capture this information so we don't get this far
+            return null;
         }
 
         if ( plugin instanceof ContextEnabled )

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/InvalidPluginException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/InvalidPluginException.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/InvalidPluginException.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/InvalidPluginException.java Fri Oct 12 17:10:29 2007
@@ -1,5 +1,8 @@
 package org.apache.maven.plugin;
 
+import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.project.artifact.InvalidDependencyVersionException;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -28,8 +31,14 @@
 public class InvalidPluginException
     extends Exception
 {
-    public InvalidPluginException( String message, Exception e )
+    public InvalidPluginException( String message, ProjectBuildingException e )
+    {
+        super( message, e );
+    }
+
+    public InvalidPluginException( String message, InvalidDependencyVersionException e )
     {
         super( message, e );
     }
+
 }

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java Fri Oct 12 17:10:29 2007
@@ -20,6 +20,9 @@
  */
 
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
+import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
@@ -44,10 +47,30 @@
     public PluginConfigurationException(
                                          PluginDescriptor pluginDescriptor,
                                          String originalMessage,
-                                         Throwable e )
+                                         ExpressionEvaluationException cause )
     {
-        super( e );
+        super( cause );
         this.pluginDescriptor = pluginDescriptor;
         this.originalMessage = originalMessage;
     }
+
+    public PluginConfigurationException(
+                                        PluginDescriptor pluginDescriptor,
+                                        String originalMessage,
+                                        ComponentConfigurationException cause )
+   {
+       super( cause );
+       this.pluginDescriptor = pluginDescriptor;
+       this.originalMessage = originalMessage;
+   }
+
+    public PluginConfigurationException(
+                                        PluginDescriptor pluginDescriptor,
+                                        String originalMessage,
+                                        ComponentLookupException cause )
+   {
+       super( cause );
+       this.pluginDescriptor = pluginDescriptor;
+       this.originalMessage = originalMessage;
+   }
 }

Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginContainerException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginContainerException.java?rev=584343&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginContainerException.java (added)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginContainerException.java Fri Oct 12 17:10:29 2007
@@ -0,0 +1,60 @@
+package org.apache.maven.plugin;
+
+import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.descriptor.MojoDescriptor;
+import org.codehaus.plexus.PlexusContainerException;
+import org.codehaus.plexus.classworlds.realm.ClassRealm;
+import org.codehaus.plexus.classworlds.realm.NoSuchRealmException;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+
+/**
+ * Exception which occurs to indicate that the plugin cannot be initialized due
+ * to some deeper problem with Plexus. Context information includes the groupId,
+ * artifactId, and version for the plugin; at times, the goal name for which
+ * execution failed; a message detailing the problem; the ClassRealm used to
+ * lookup the plugin; and the Plexus exception that caused this error.
+ * 
+ * @author jdcasey
+ *
+ */
+public class PluginContainerException
+    extends PluginManagerException
+{
+
+    private final ClassRealm pluginRealm;
+
+    public PluginContainerException( MojoDescriptor mojoDescriptor,
+                                     ClassRealm pluginRealm,
+                                     String message,
+                                     ComponentLookupException e )
+    {
+        super( mojoDescriptor, message, e );
+
+        this.pluginRealm = pluginRealm;
+    }
+
+    public PluginContainerException( Plugin plugin,
+                                     ClassRealm pluginRealm,
+                                     String message,
+                                     NoSuchRealmException e )
+    {
+        super( plugin, message, e );
+
+        this.pluginRealm = pluginRealm;
+    }
+
+    public PluginContainerException( Plugin plugin,
+                                     ClassRealm pluginRealm,
+                                     String message,
+                                     PlexusContainerException e )
+    {
+        super( plugin, message, e );
+
+        this.pluginRealm = pluginRealm;
+    }
+
+    public ClassRealm getPluginRealm()
+    {
+        return pluginRealm;
+    }
+}

Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginContainerException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginContainerException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java Fri Oct 12 17:10:29 2007
@@ -19,10 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.artifact.repository.ArtifactRepository;
 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.execution.MavenSession;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.ReportPlugin;
@@ -32,7 +30,6 @@
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.artifact.InvalidDependencyVersionException;
 import org.apache.maven.reporting.MavenReport;
-import org.apache.maven.settings.Settings;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
 import java.util.Map;
@@ -62,19 +59,19 @@
     Plugin getPluginDefinitionForPrefix( String prefix,
                                          MavenSession session,
                                          MavenProject project );
-        
+
     PluginDescriptor verifyPlugin( Plugin plugin,
                                    MavenProject project,
                                    MavenSession session )
         throws ArtifactResolutionException, PluginVersionResolutionException, ArtifactNotFoundException,
-        InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException,
+        InvalidPluginException, PluginManagerException, PluginNotFoundException,
         PluginVersionNotFoundException;
 
     PluginDescriptor verifyReportPlugin( ReportPlugin reportPlugin,
                                          MavenProject project,
                                          MavenSession session )
         throws PluginVersionResolutionException, ArtifactResolutionException, ArtifactNotFoundException,
-        InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException,
+        InvalidPluginException, PluginManagerException, PluginNotFoundException,
         PluginVersionNotFoundException;
 
     Object getPluginComponent( Plugin plugin,

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManagerException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManagerException.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManagerException.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManagerException.java Fri Oct 12 17:10:29 2007
@@ -1,5 +1,12 @@
 package org.apache.maven.plugin;
 
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.descriptor.MojoDescriptor;
+import org.codehaus.plexus.PlexusContainerException;
+import org.codehaus.plexus.classworlds.realm.NoSuchRealmException;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -28,13 +35,74 @@
 public class PluginManagerException
     extends Exception
 {
-    public PluginManagerException( String message )
+
+    private final String pluginGroupId;
+
+    private final String pluginArtifactId;
+
+    private final String pluginVersion;
+
+    private String goal;
+
+    protected PluginManagerException( Plugin plugin,
+                                   String message,
+                                   PlexusContainerException cause )
+    {
+        super( message, cause );
+
+        pluginGroupId = plugin.getGroupId();
+        pluginArtifactId = plugin.getArtifactId();
+        pluginVersion = plugin.getVersion();
+    }
+
+    protected PluginManagerException( Plugin plugin, String message,
+                                   NoSuchRealmException cause )
+    {
+        super( message, cause );
+
+        pluginGroupId = plugin.getGroupId();
+        pluginArtifactId = plugin.getArtifactId();
+        pluginVersion = plugin.getVersion();
+    }
+
+    protected PluginManagerException( MojoDescriptor mojoDescriptor,
+                                   String message,
+                                   ComponentLookupException cause )
+    {
+        super( message, cause );
+        pluginGroupId = mojoDescriptor.getPluginDescriptor().getGroupId();
+        pluginArtifactId = mojoDescriptor.getPluginDescriptor().getArtifactId();
+        pluginVersion = mojoDescriptor.getPluginDescriptor().getVersion();
+        goal = mojoDescriptor.getGoal();
+    }
+
+    public PluginManagerException( Plugin plugin,
+                                   InvalidVersionSpecificationException cause )
+    {
+        super( cause );
+
+        pluginGroupId = plugin.getGroupId();
+        pluginArtifactId = plugin.getArtifactId();
+        pluginVersion = plugin.getVersion();
+    }
+
+    public String getPluginGroupId()
+    {
+        return pluginGroupId;
+    }
+
+    public String getPluginArtifactId()
+    {
+        return pluginArtifactId;
+    }
+
+    public String getPluginVersion()
     {
-        super( message );
+        return pluginVersion;
     }
 
-    public PluginManagerException( String message, Exception e )
+    public String getGoal()
     {
-        super( message, e );
+        return goal;
     }
 }

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginNotFoundException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginNotFoundException.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginNotFoundException.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginNotFoundException.java Fri Oct 12 17:10:29 2007
@@ -21,6 +21,7 @@
 
 import org.apache.maven.artifact.resolver.AbstractArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.model.Plugin;
 
 /**
  * Exception occurring trying to resolve a plugin.
@@ -31,9 +32,17 @@
 public class PluginNotFoundException
     extends AbstractArtifactResolutionException
 {
-    public PluginNotFoundException( ArtifactNotFoundException e )
+    private final Plugin plugin;
+
+    public PluginNotFoundException( Plugin plugin, ArtifactNotFoundException e )
     {
         super( "Plugin could not be found - check that the goal name is correct: " + e.getMessage(), e.getGroupId(),
                e.getArtifactId(), e.getVersion(), "maven-plugin",null, e.getRemoteRepositories(), null, e.getCause() );
+        this.plugin = plugin;
+    }
+
+    public Plugin getPlugin()
+    {
+        return plugin;
     }
 }

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterException.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterException.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterException.java Fri Oct 12 17:10:29 2007
@@ -44,16 +44,6 @@
         this.parameters = parameters;
     }
 
-    public PluginParameterException( MojoDescriptor mojo, List parameters, Throwable cause )
-    {
-        super( mojo.getPluginDescriptor(),
-               "Invalid or missing parameters: " + parameters + " for mojo: " + mojo.getRoleHint(), cause );
-
-        this.mojo = mojo;
-
-        this.parameters = parameters;
-    }
-
     public MojoDescriptor getMojoDescriptor()
     {
         return mojo;

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java Fri Oct 12 17:10:29 2007
@@ -3,7 +3,6 @@
 import org.apache.maven.artifact.repository.ArtifactRepository;
 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.lifecycle.model.MojoBinding;
@@ -30,7 +29,7 @@
 /**
  * Responsible for loading plugins, reports, and any components contained therein. Will resolve
  * plugin versions and plugin prefixes as necessary for plugin resolution.
- * 
+ *
  * @author jdcasey
  *
  */
@@ -66,7 +65,7 @@
         {
             Throwable cause = e.getCause();
 
-            if ( cause != null && ( cause instanceof ComponentLookupException ) )
+            if ( ( cause != null ) && ( cause instanceof ComponentLookupException ) )
             {
                 StringBuffer message = new StringBuffer();
                 message.append( "ComponentLookupException in PluginManager while looking up a component in the realm of: " );
@@ -98,8 +97,8 @@
     }
 
     /**
-     * Load the {@link PluginDescriptor} instance for the plugin implied by the specified MojoBinding, 
-     * using the project for {@link ArtifactRepository} and other supplemental plugin information as 
+     * Load the {@link PluginDescriptor} instance for the plugin implied by the specified MojoBinding,
+     * using the project for {@link ArtifactRepository} and other supplemental plugin information as
      * necessary.
      */
     public PluginDescriptor loadPlugin( MojoBinding mojoBinding, MavenProject project )
@@ -193,7 +192,7 @@
     }
 
     /**
-     * Look for a plugin in the pluginGroups specified in the settings.xml that has a prefix 
+     * Look for a plugin in the pluginGroups specified in the settings.xml that has a prefix
      * matching the one specified. Return the {@link PluginDescriptor} if a match is found.
      */
     private PluginDescriptor loadByPrefix( String prefix, MavenProject project )
@@ -254,10 +253,6 @@
         {
             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 );
@@ -278,8 +273,8 @@
     }
 
     /**
-     * Load the {@link PluginDescriptor} instance for the report plugin implied by the specified MojoBinding, 
-     * using the project for {@link ArtifactRepository} and other supplemental report/plugin information as 
+     * Load the {@link PluginDescriptor} instance for the report plugin implied by the specified MojoBinding,
+     * using the project for {@link ArtifactRepository} and other supplemental report/plugin information as
      * necessary.
      */
     public PluginDescriptor loadReportPlugin( MojoBinding mojoBinding, MavenProject project )
@@ -325,10 +320,6 @@
             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 );
         }

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoaderException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoaderException.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoaderException.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/loader/PluginLoaderException.java Fri Oct 12 17:10:29 2007
@@ -1,12 +1,20 @@
 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.model.Plugin;
 import org.apache.maven.model.ReportPlugin;
+import org.apache.maven.plugin.InvalidPluginException;
+import org.apache.maven.plugin.PluginManagerException;
+import org.apache.maven.plugin.PluginNotFoundException;
+import org.apache.maven.plugin.version.PluginVersionNotFoundException;
+import org.apache.maven.plugin.version.PluginVersionResolutionException;
 
 /**
  * Signifies a failure to load a plugin. This is used to abstract the specific errors which may be
  * encountered at lower levels, and provide a dependable interface to the plugin-loading framework.
- * 
+ *
  * @author jdcasey
  *
  */
@@ -16,18 +24,60 @@
 
     private String pluginKey;
 
-    public PluginLoaderException( Plugin plugin, String message, Throwable cause )
+    public PluginLoaderException( Plugin plugin, String message, ArtifactResolutionException cause )
+    {
+        super( message, cause );
+        pluginKey = plugin.getKey();
+    }
+
+    public PluginLoaderException( Plugin plugin, String message, ArtifactNotFoundException cause )
+    {
+        super( message, cause );
+        pluginKey = plugin.getKey();
+    }
+
+    public PluginLoaderException( Plugin plugin, String message, PluginNotFoundException cause )
+    {
+        super( message, cause );
+        pluginKey = plugin.getKey();
+    }
+
+    public PluginLoaderException( Plugin plugin, String message, PluginVersionResolutionException cause )
     {
         super( message, cause );
-        this.pluginKey = plugin.getKey();
+        pluginKey = plugin.getKey();
+    }
+
+    public PluginLoaderException( Plugin plugin, String message, InvalidVersionSpecificationException cause )
+    {
+        super( message, cause );
+        pluginKey = plugin.getKey();
+    }
+
+    public PluginLoaderException( Plugin plugin, String message, InvalidPluginException cause )
+    {
+        super( message, cause );
+        pluginKey = plugin.getKey();
+    }
+
+    public PluginLoaderException( Plugin plugin, String message, PluginManagerException cause )
+    {
+        super( message, cause );
+        pluginKey = plugin.getKey();
+    }
+
+    public PluginLoaderException( Plugin plugin, String message, PluginVersionNotFoundException cause )
+    {
+        super( message, cause );
+        pluginKey = plugin.getKey();
     }
 
     public PluginLoaderException( Plugin plugin, String message )
     {
         super( message );
-        this.pluginKey = plugin.getKey();
+        pluginKey = plugin.getKey();
     }
-    
+
     public PluginLoaderException( String message )
     {
         super( message );
@@ -41,15 +91,15 @@
     public PluginLoaderException( ReportPlugin plugin, String message, Throwable cause )
     {
         super( message, cause );
-        this.pluginKey = plugin.getKey();
+        pluginKey = plugin.getKey();
     }
 
     public PluginLoaderException( ReportPlugin plugin, String message )
     {
         super( message );
-        this.pluginKey = plugin.getKey();
+        pluginKey = plugin.getKey();
     }
-    
+
     public String getPluginKey()
     {
         return pluginKey;

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/PluginVersionResolutionException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/PluginVersionResolutionException.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/PluginVersionResolutionException.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/PluginVersionResolutionException.java Fri Oct 12 17:10:29 2007
@@ -1,5 +1,8 @@
 package org.apache.maven.plugin.version;
 
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -47,7 +50,16 @@
 
     private final String baseMessage;
 
-    public PluginVersionResolutionException( String groupId, String artifactId, String baseMessage, Throwable cause )
+    public PluginVersionResolutionException( String groupId, String artifactId, String baseMessage, ArtifactMetadataRetrievalException cause )
+    {
+        super( "Error resolving version for \'" + groupId + ":" + artifactId + "\': " + baseMessage, cause );
+
+        this.groupId = groupId;
+        this.artifactId = artifactId;
+        this.baseMessage = baseMessage;
+    }
+
+    public PluginVersionResolutionException( String groupId, String artifactId, String baseMessage, InvalidVersionSpecificationException cause )
     {
         super( "Error resolving version for \'" + groupId + ":" + artifactId + "\': " + baseMessage, cause );
 

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/reactor/MavenExecutionException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/reactor/MavenExecutionException.java?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/reactor/MavenExecutionException.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/reactor/MavenExecutionException.java Fri Oct 12 17:10:29 2007
@@ -1,5 +1,11 @@
 package org.apache.maven.reactor;
 
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.extension.ExtensionScanningException;
+import org.apache.maven.project.ProjectBuildingException;
+
+import java.io.IOException;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -59,7 +65,22 @@
         super( cause );
     }
 
-    public MavenExecutionException( String message, Throwable cause )
+    public MavenExecutionException( String message, IOException cause )
+    {
+        super( message, cause );
+    }
+
+    public MavenExecutionException( String message, ProjectBuildingException cause )
+    {
+        super( message, cause );
+    }
+
+    public MavenExecutionException( String message, ArtifactResolutionException cause )
+    {
+        super( message, cause );
+    }
+
+    public MavenExecutionException( String message, ExtensionScanningException cause )
     {
         super( message, cause );
     }

Modified: maven/components/trunk/maven-embedder/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/pom.xml?rev=584343&r1=584342&r2=584343&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/pom.xml (original)
+++ maven/components/trunk/maven-embedder/pom.xml Fri Oct 12 17:10:29 2007
@@ -245,4 +245,21 @@
       </build>
     </profile>
   </profiles>
+  
+  <!-- 
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <artifactId>maven-surefire-plugin</artifactId>
+          <configuration>
+            <excludes>
+              <exclude>**/TestEmbedderLogger.java</exclude>
+            </excludes>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+   -->
 </project>