o starting the simplification of the error reporting

git-svn-id: https://svn.apache.org/repos/asf/maven/components/branches/MNG-2766@769193 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jason van Zyl 2009-04-27 22:38:19 +00:00
parent a0c50f8554
commit e10d95d4e1
6 changed files with 40 additions and 39 deletions

View File

@ -31,6 +31,7 @@ import org.apache.maven.execution.MavenSession;
import org.apache.maven.execution.RuntimeInformation;
import org.apache.maven.lifecycle.LifecycleExecutionException;
import org.apache.maven.lifecycle.LifecycleExecutor;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.project.ProjectBuildingException;
@ -103,7 +104,7 @@ public class DefaultMaven
return result;
}
catch ( BuildFailureException e )
catch ( MojoFailureException e )
{
result.addException( e );

View File

@ -46,7 +46,7 @@ public interface MavenExecutionResult
// - project building exception
// - invalid project model exception: list of markers
// - xmlpull parser exception
List getExceptions();
List<Exception> getExceptions();
MavenExecutionResult addException( Throwable e );

View File

@ -23,7 +23,6 @@ import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import org.apache.maven.BuildFailureException;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.execution.ReactorManager;
import org.apache.maven.lifecycle.mapping.LifecycleMapping;
@ -73,7 +72,7 @@ public class DefaultLifecycleExecutor
private Map<String, Lifecycle> phaseToLifecycleMap;
public void execute( MavenSession session )
throws BuildFailureException, LifecycleExecutionException
throws LifecycleExecutionException, MojoFailureException
{
// TODO: This is dangerous, particularly when it's just a collection of loose-leaf projects being built
// within the same reactor (using an inclusion pattern to gather them up)...
@ -93,7 +92,7 @@ public class DefaultLifecycleExecutor
if ( goals.isEmpty() )
{
throw new BuildFailureException( "\n\nYou must specify at least one goal. Try 'mvn install' to build or 'mvn --help' for options \nSee http://maven.apache.org for more information.\n\n" );
throw new LifecycleExecutionException( "\n\nYou must specify at least one goal. Try 'mvn install' to build or 'mvn --help' for options \nSee http://maven.apache.org for more information.\n\n" );
}
for ( MavenProject currentProject : session.getSortedProjects() )
@ -126,7 +125,7 @@ public class DefaultLifecycleExecutor
}
private void executeGoalAndHandleFailures( String task, MavenSession session, MavenProject project, long buildStartTime, String target )
throws BuildFailureException, LifecycleExecutionException
throws LifecycleExecutionException, MojoFailureException
{
try
{
@ -139,13 +138,6 @@ public class DefaultLifecycleExecutor
throw e;
}
}
catch ( BuildFailureException e )
{
if ( handleExecutionFailure( session, project, e, task, buildStartTime ) )
{
throw e;
}
}
}
private boolean handleExecutionFailure( MavenSession session, MavenProject project, Exception e, String task, long buildStartTime )
@ -168,7 +160,7 @@ public class DefaultLifecycleExecutor
}
private void executeGoal( String task, MavenSession session, MavenProject project )
throws LifecycleExecutionException, BuildFailureException
throws LifecycleExecutionException, MojoFailureException
{
List<MojoDescriptor> lifecyclePlan = calculateLifecyclePlan( task, session );
@ -182,11 +174,6 @@ public class DefaultLifecycleExecutor
{
pluginManager.executeMojo( session, mojoExecution );
}
catch ( MojoFailureException e )
{
// If the mojo actually screws up, like a compilation error
throw new LifecycleExecutionException( "Error executing goal.", e );
}
catch ( PluginExecutionException e )
{
// This looks like a duplicate
@ -308,9 +295,9 @@ public class DefaultLifecycleExecutor
MojoDescriptor md = getMojoDescriptor( s, session, project );
boolean include = lifecycle.getPhases().contains( md.getPhase() );
System.out.println( ">>> " + goal );
System.out.println( ">>> " + md.getPhase() );
System.out.println( ">>> " + include );
// System.out.println( ">>> " + goal );
// System.out.println( ">>> " + md.getPhase() );
// System.out.println( ">>> " + include );
// need to know if this plugin belongs to a phase in the lifecycle that's running
if ( md.getPhase() != null && include )
@ -336,12 +323,7 @@ public class DefaultLifecycleExecutor
lifecyclePlan.add( getMojoDescriptor( mojo, session, project ) );
}
}
for ( MojoDescriptor md : lifecyclePlan )
{
System.out.println( md.getGoal() );
}
return lifecyclePlan;
}

View File

@ -23,6 +23,7 @@ import java.util.List;
import org.apache.maven.BuildFailureException;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
/**
@ -44,5 +45,5 @@ public interface LifecycleExecutor
throws LifecycleExecutionException;
void execute( MavenSession session )
throws LifecycleExecutionException, BuildFailureException;
throws LifecycleExecutionException, MojoFailureException;
}

View File

@ -20,6 +20,7 @@ package org.apache.maven.cli;
*/
import java.io.File;
import java.util.List;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.ParseException;
@ -33,6 +34,7 @@ import org.apache.maven.embedder.MavenEmbedderFileLogger;
import org.apache.maven.embedder.MavenEmbedderLogger;
import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.execution.MavenExecutionResult;
import org.apache.maven.plugin.MojoFailureException;
import org.codehaus.plexus.classworlds.ClassWorld;
/**
@ -165,8 +167,23 @@ public class MavenCli
MavenExecutionResult result = mavenEmbedder.execute( request );
CLIReportingUtils.logResult( request, result, logger );
//CLIReportingUtils.logResult( request, result, logger );
System.out.println( "exceptions: " + result.hasExceptions() );
System.out.println( result.getExceptions() );
Exception e = result.getExceptions().get( 0 );
if ( e instanceof MojoFailureException )
{
System.out.println( ((MojoFailureException)e).getLongMessage() );
}
else
{
System.out.println( e.getMessage() );
}
if ( result.hasExceptions() )
{
return 1;

View File

@ -22,10 +22,9 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Properties;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.ArtifactUtils;
@ -48,14 +47,13 @@ import org.apache.maven.model.interpolator.PomInterpolatorTag;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.profiles.DefaultProfileManager;
import org.apache.maven.profiles.ProfileActivationException;
import org.apache.maven.profiles.ProfileManagerInfo;
import org.apache.maven.profiles.ProfileManager;
import org.apache.maven.profiles.ProfileManagerInfo;
import org.apache.maven.project.artifact.InvalidDependencyVersionException;
import org.apache.maven.project.validation.ModelValidationResult;
import org.apache.maven.project.validation.ModelValidator;
import org.apache.maven.repository.RepositorySystem;
import org.apache.maven.repository.VersionNotFoundException;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.Logger;
@ -303,14 +301,16 @@ public class DefaultMavenProjectBuilder
public MavenProject buildFromRepository( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository )
throws ProjectBuildingException
{
if(remoteRepositories == null)
if(remoteRepositories == null)
{
throw new IllegalArgumentException("repositories: null");
}
ProjectBuilderConfiguration configuration = new DefaultProjectBuilderConfiguration()
.setLocalRepository( localRepository )
.setRemoteRepositories(remoteRepositories);
return buildFromRepository(artifact, configuration);
ProjectBuilderConfiguration configuration = new DefaultProjectBuilderConfiguration()
.setLocalRepository( localRepository )
.setRemoteRepositories(remoteRepositories);
return buildFromRepository(artifact, configuration);
}
/**