Index: maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
===================================================================
--- maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java	(revision 659652)
+++ maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java	(working copy)
@@ -1231,18 +1231,21 @@
         // TODO: we don't need to resolve over and over again, as long as we are sure that the parameters are the same
         // check this with yourkit as a hot spot.
         // Don't recreate if already created - for effeciency, and because clover plugin adds to it
+        getLogger().info( "=== Calling DefaultPluginManager#resolveTransitiveDependencies. Existing non transitive dependencies ( " + project.getDependencyArtifacts()  + " )");
+        getLogger().info( "=== Calling DefaultPluginManager#resolveTransitiveDependencies. Existing transitive dependencies ( " + project.getArtifacts()  + " )");
         if ( project.getDependencyArtifacts() == null )
         {
             project.setDependencyArtifacts( project.createArtifacts( artifactFactory, null, null ) );
         }
-        ArtifactResolutionResult result = artifactResolver.resolveTransitively( project.getDependencyArtifacts(),
+
+            ArtifactResolutionResult result = artifactResolver.resolveTransitively( project.getDependencyArtifacts(),
                                                                                 artifact,
                                                                                 project.getManagedVersionMap(),
                                                                                 context.getLocalRepository(),
                                                                                 project.getRemoteArtifactRepositories(),
                                                                                 artifactMetadataSource, filter );
 
-        project.setArtifacts( result.getArtifacts() );
+            project.setArtifacts( result.getArtifacts() );
     }
 
     // ----------------------------------------------------------------------
Index: maven-core/pom.xml
===================================================================
--- maven-core/pom.xml	(revision 659652)
+++ maven-core/pom.xml	(working copy)
@@ -49,6 +49,7 @@
       <plugin>
         <artifactId>shade-maven-plugin</artifactId>
         <groupId>org.codehaus.mojo</groupId>
+        <version>1.0-alpha-4</version>
         <executions>
           <execution>
             <phase>package</phase>
Index: maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
===================================================================
--- maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java	(revision 659652)
+++ maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java	(working copy)
@@ -350,7 +350,8 @@
 
         try
         {
-            project.setDependencyArtifacts( project.createArtifacts( artifactFactory, null, null ) );
+             System.out.println("[INFO] === Calling DefaultMavenProjectBuilder#buildWithDependencies() on " + project);
+             project.setDependencyArtifacts( project.createArtifacts( artifactFactory, null, null ) );
         }
         catch ( InvalidDependencyVersionException e )
         {
Index: maven-project/src/main/java/org/apache/maven/project/MavenProject.java
===================================================================
--- maven-project/src/main/java/org/apache/maven/project/MavenProject.java	(revision 659652)
+++ maven-project/src/main/java/org/apache/maven/project/MavenProject.java	(working copy)
@@ -1094,8 +1094,34 @@
 
         // flush the calculated artifactMap
         this.artifactMap = null;
+
+        postProcessArtifacts();
     }
 
+    public static interface ArtifactPostProcessor {
+        Set convert( Set artifacts );
+    }
+
+    private List artifactPostProcessors = new ArrayList();
+
+    public void addArtifactPostProcessor( ArtifactPostProcessor artifactPostProcessor )
+    {
+//        System.out.println("[INFO] === Adding artifactPostProcessor " + artifactPostProcessor );
+        artifactPostProcessors.add( artifactPostProcessor );
+    }  
+
+    private void postProcessArtifacts() {
+//        System.out.println("[INFO] === PostProcessing transitive dependencies ( " + artifacts + " ) on " + this + " " + artifactPostProcessors.size() );
+        for ( Iterator i = artifactPostProcessors.iterator(); i.hasNext(); )
+        {
+            ArtifactPostProcessor postProcessor = (ArtifactPostProcessor) i.next();
+
+            this.artifacts = postProcessor.convert( this.artifacts );
+
+//            System.out.println("[INFO] === Post Processed transitive dependencies ( " + artifacts + " ) on " + this);
+        }
+    }
+
     /**
      * All dependencies that this project has, including transitive ones.
      * Contents are lazily populated, so depending on what phases have run dependencies in some scopes won't be included.
