fixing error reporting for when pom file is missing, and adding deprecated-mojo and deprecated-mojo-param warnings.

git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@604538 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
John Dennis Casey 2007-12-16 01:28:17 +00:00
parent 5159c0b4b6
commit 10a192dfc2
7 changed files with 88 additions and 29 deletions

View File

@ -0,0 +1,17 @@
package org.apache.maven;
import org.apache.maven.execution.MavenExecutionRequest;
import java.util.List;
public aspect CoreDebuggingAspect
{
// after( MavenExecutionRequest request ) returning( List projects ):
// call( List DefaultMaven.getProjects( MavenExecutionRequest ) )
// && args( request )
// {
// System.out.println( "Got projects-list of size " + ( projects == null ? "null" : "" + projects.size() ) + ":\n\n" + projects );
// }
}

View File

@ -13,16 +13,7 @@ public privileged aspect CoreReporterDebugAspect
// && target( reporter )
// {
// SourceLocation location = thisJoinPoint.getSourceLocation();
// System.out.println( "Registering: " + key.getClass().getName() + "@" + key.hashCode() + "\nfrom: " + location.getFileName() + ", line: " + location.getLine() + "\nreporter instance hashcode is: " + reporter.hashCode() );
// }
//
// after() returning( Throwable key ):
// execution( Throwable CoreErrorReporter+.findReportedException( Throwable ) )
// {
// if ( key != null )
// {
// System.out.println( "Found reported exception: " + key.getClass().getName() + "@" + key.hashCode() );
// }
// System.out.println( "Registering: " + key + "\nfrom: " + location.getFileName() + ", line: " + location.getLine() + "\nreporter is: " + reporter );
// }
}

View File

@ -42,6 +42,10 @@ public privileged aspect LifecycleErrorReporterAspect
execution( void PluginManager+.executeMojo( MavenProject, .. ) )
&& args( project, .. );
private pointcut within_pm_executeMojo( MavenProject project ):
withincode( void PluginManager+.executeMojo( MavenProject, .. ) )
&& args( project, .. );
before( MojoBinding binding, MavenProject project, LifecycleExecutionException err ):
cflow( le_executeGoalAndHandleFailures( binding ) )
&& execution( LifecycleExecutionException.new( String, MavenProject ) )
@ -68,14 +72,15 @@ public privileged aspect LifecycleErrorReporterAspect
getReporter().reportMojoExecutionException( binding, project, cause );
}
before( MojoBinding binding, MavenProject project, PluginExecutionException cause ):
PluginExecutionException around( MojoBinding binding, MavenProject project ):
cflow( le_executeGoalAndHandleFailures( binding ) )
&& cflow( pm_executeMojo( project ) )
&& !handler( MojoExecutionException )
&& execution( PluginExecutionException.new( .., String ) )
&& this( cause )
&& call( PluginExecutionException.new( .., String ) )
{
PluginExecutionException cause = proceed( binding, project );
getReporter().reportInvalidPluginExecutionEnvironment( binding, project, cause );
return cause;
}
before( MojoBinding binding, MavenProject project, ComponentLookupException cause ):

View File

@ -281,18 +281,7 @@ public class DefaultMaven
{
List projects = new ArrayList( files.size() );
if ( files.isEmpty() )
{
try
{
projects.add( projectBuilder.buildStandaloneSuperProject( globalProfileManager ) );
}
catch ( ProjectBuildingException e )
{
throw new MavenExecutionException( "Failed to build super-project instance.", e );
}
}
else
if ( !files.isEmpty() )
{
for ( Iterator iterator = files.iterator(); iterator.hasNext(); )
{

View File

@ -358,10 +358,14 @@ public class DefaultCoreErrorReporter
writer.write( NEWLINE );
writer.write( "The following plugin cannot function in the current build environment:" );
writer.write( NEWLINE );
writeMojoBinding( binding, writer );
writer.write( "Referenced from project:" );
writer.write( "While building project:" );
writer.write( NEWLINE );
writeProjectCoordinate( project, writer );
writer.write( NEWLINE );
writer.write( "Reason: " );
writer.write( cause.getMessage() );

View File

@ -528,6 +528,11 @@ public class DefaultPluginManager
+ " requires online mode for execution. Maven is currently offline." );
}
if ( mojoDescriptor.getDeprecated() != null )
{
getLogger().warn( "Mojo: " + mojoDescriptor.getGoal() + " is deprecated.\n" + mojoDescriptor.getDeprecated() );
}
if ( mojoDescriptor.isDependencyResolutionRequired() != null )
{
Collection projects;
@ -805,6 +810,8 @@ public class DefaultPluginManager
mergedConfiguration,
mojoDescriptor );
checkDeprecatedParameters( mojoDescriptor, extractedMojoConfiguration );
checkRequiredParameters( mojoDescriptor, extractedMojoConfiguration, expressionEvaluator );
populatePluginFields( mojo, mojoDescriptor, extractedMojoConfiguration, expressionEvaluator );
@ -812,6 +819,52 @@ public class DefaultPluginManager
return mojo;
}
private void checkDeprecatedParameters( MojoDescriptor mojoDescriptor,
PlexusConfiguration extractedMojoConfiguration )
{
if ( ( extractedMojoConfiguration == null ) || ( extractedMojoConfiguration.getChildCount() < 1 ) )
{
return;
}
List parameters = mojoDescriptor.getParameters();
if ( ( parameters != null ) && !parameters.isEmpty() )
{
for ( Iterator it = parameters.iterator(); it.hasNext(); )
{
Parameter param = (Parameter) it.next();
if ( param.getDeprecated() != null )
{
boolean warnOfDeprecation = false;
if ( extractedMojoConfiguration.getChild( param.getName() ) != null )
{
warnOfDeprecation = true;
}
else if ( ( param.getAlias() != null ) && ( extractedMojoConfiguration.getChild( param.getAlias() ) != null ) )
{
warnOfDeprecation = true;
}
if ( warnOfDeprecation )
{
StringBuffer buffer = new StringBuffer();
buffer.append( "In mojo: " ).append( mojoDescriptor.getGoal() ).append( ", parameter: " ).append( param.getName() );
if ( param.getAlias() != null )
{
buffer.append( " (alias: " ).append( param.getAlias() ).append( ")" );
}
buffer.append( " is deprecated:" ).append( "\n\n" ).append( param.getDeprecated() ).append( "\n" );
getLogger().warn( buffer.toString() );
}
}
}
}
}
private void setDescriptorClassAndArtifactInfo( PluginDescriptor pluginDescriptor,
MavenProject project,
MavenSession session )

View File

@ -13,7 +13,7 @@ public privileged aspect ProjectReporterDebugAspect
// && target( reporter )
// {
// SourceLocation location = thisJoinPoint.getSourceLocation();
// System.out.println( "Registering: " + key.getClass().getName() + "@" + key.hashCode() + "\nfrom: " + location.getFileName() + ", line: " + location.getLine() + "\nreporter is: " + reporter + "\n\nMessage:\n\n" + message );
// System.out.println( "Registering: " + key + "\nfrom: " + location.getFileName() + ", line: " + location.getLine() + "\nreporter is: " + reporter + "\n\nMessage:\n\n" + message );
// }
//
// before():
@ -27,7 +27,7 @@ public privileged aspect ProjectReporterDebugAspect
// {
// if ( key != null )
// {
// System.out.println( "Found reported exception: " + key.getClass().getName() + "@" + key.hashCode() );
// System.out.println( "Found reported exception: " + key );
// }
// }