diff --git a/maven-core/src/main/aspect/org/apache/maven/compat/plugin/Maven20xCompatAspect.aj b/maven-core/src/main/aspect/org/apache/maven/compat/plugin/Maven20xCompatAspect.aj index 76d7c3b0ec..5609e3f09e 100644 --- a/maven-core/src/main/aspect/org/apache/maven/compat/plugin/Maven20xCompatAspect.aj +++ b/maven-core/src/main/aspect/org/apache/maven/compat/plugin/Maven20xCompatAspect.aj @@ -28,18 +28,43 @@ import org.apache.maven.settings.Settings; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; import java.io.IOException; +import java.io.PrintStream; import java.util.Iterator; -import java.util.LinkedHashSet; import java.util.Set; public privileged aspect Maven20xCompatAspect { + // pointcut to avoid recursive matching on behavior injected by this aspect. + private pointcut notHere(): !within( Maven20xCompatAspect ); + + private pointcut showVersion( PrintStream stream, String string): + cflow( execution( void org.apache.maven.cli.CLIReportingUtils.showVersion() ) ) + && call( void PrintStream.println( String ) ) + && args( string ) + && target( stream ) + && notHere(); + + void around( PrintStream stream, String string ): showVersion( stream, string ) + { + if ( stream == System.out && string != null && string.startsWith( "Maven version:" ) ) + { + System.out.println( string + " (compat enabled)" ); + } + else + { + proceed( stream, string ); + } + } + // GRAB Session and Request. private MavenSession session; private MavenExecutionRequest request; - private pointcut sessionCreation( MavenSession session ): execution( public MavenSession.new(..) ) && this( session ); + private pointcut sessionCreation( MavenSession session ): + execution( public MavenSession.new(..) ) + && this( session ) + && notHere(); after( MavenSession session ): sessionCreation( session ) { @@ -48,7 +73,8 @@ public privileged aspect Maven20xCompatAspect private pointcut methodsTakingRequest( MavenExecutionRequest request ): execution( MavenExecutionResult *.*( MavenExecutionRequest ) ) - && args( request ); + && args( request ) + && notHere(); before( MavenExecutionRequest request ): methodsTakingRequest( request ) { @@ -59,7 +85,8 @@ public privileged aspect Maven20xCompatAspect private pointcut verifyPlugin( Plugin plugin, MavenProject project, PluginManager manager ): call( public PluginDescriptor PluginManager+.verifyPlugin( Plugin, MavenProject, Settings, ArtifactRepository ) ) && args( plugin, project, .. ) - && target( manager ); + && target( manager ) + && notHere(); PluginDescriptor around( Plugin plugin, MavenProject project, @@ -86,7 +113,8 @@ public privileged aspect Maven20xCompatAspect private pointcut extDepArtifactsResolved( DefaultExtensionManager mgr ): call( public Set ResolutionGroup.getArtifacts() ) && within( DefaultExtensionManager ) - && this( mgr ); + && this( mgr ) + && notHere(); Set around( DefaultExtensionManager mgr ): extDepArtifactsResolved( mgr ) { @@ -101,7 +129,8 @@ public privileged aspect Maven20xCompatAspect private pointcut pluginDepArtifactsResolved( DefaultPluginManager mgr ): call( public Set ResolutionGroup.getArtifacts() ) && cflow( execution( Set DefaultPluginManager.getPluginArtifacts(..) ) ) - && this( mgr ); + && this( mgr ) + && notHere(); Set around( DefaultPluginManager mgr ): pluginDepArtifactsResolved( mgr ) { @@ -115,7 +144,8 @@ public privileged aspect Maven20xCompatAspect // USE Request to compensate for old buildSettings() API. private pointcut buildSettings( MavenSettingsBuilder builder ): execution( public Settings MavenSettingsBuilder+.buildSettings() ) - && target( builder ); + && target( builder ) + && notHere(); Settings around( MavenSettingsBuilder builder ) throws IOException, XmlPullParserException: diff --git a/maven-embedder/pom.xml b/maven-embedder/pom.xml index 8bb5c7cce0..5db6d2da03 100644 --- a/maven-embedder/pom.xml +++ b/maven-embedder/pom.xml @@ -86,6 +86,32 @@ under the License. 1.5.3 + + + + + org.codehaus.mojo + aspectj-maven-plugin + + + + weave-compat + + compile + + + + + org.apache.maven + maven-core + + + + + + + +