Author: krosenvold
Date: Sun Apr 18 11:36:37 2010
New Revision: 935334

URL: http://svn.apache.org/viewvc?rev=935334&view=rev
Log:
[MNG-4633] Reactor artifact resolution in weave mode

Resolves artifacts from within reactor build.
No longer requires artifacts to be present in local repository before building 
weave mode ;)

Modified:
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/BuilderCommon.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleExecutionPlanCalculatorImpl.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleWeaveBuilder.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ProjectSegment.java
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/BuilderCommonTest.java
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/LifecycleWeaveBuilderTest.java
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/ProjectDependenciesResolverStub.java
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/ProjectDependencyGraphStub.java

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java?rev=935334&r1=935333&r2=935334&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java
 Sun Apr 18 11:36:37 2010
@@ -42,7 +42,7 @@ import org.apache.maven.repository.Repos
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 
-...@component(role=ProjectDependenciesResolver.class)
+...@component(role = ProjectDependenciesResolver.class)
 public class DefaultProjectDependenciesResolver
     implements ProjectDependenciesResolver
 {
@@ -63,18 +63,31 @@ public class DefaultProjectDependenciesR
                                   Collection<String> scopesToResolve, 
MavenSession session )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
-        return resolve( Collections.singleton( project ), scopesToCollect, 
scopesToResolve, session );
+        Set<MavenProject> mavenProjects = Collections.singleton( project );
+        return resolveImpl( mavenProjects, scopesToCollect, scopesToResolve, 
session,
+                            getIgnorableArtifacts( mavenProjects ) );
     }
 
     public Set<Artifact> resolve( Collection<? extends MavenProject> projects, 
Collection<String> scopesToResolve,
                                   MavenSession session )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
-        return resolve( projects, null, scopesToResolve, session );
+        return resolveImpl( projects, null, scopesToResolve, session, 
getIgnorableArtifacts( projects ) );
     }
 
-    public Set<Artifact> resolve( Collection<? extends MavenProject> projects, 
Collection<String> scopesToCollect,
-                                  Collection<String> scopesToResolve, 
MavenSession session )
+    public Set<Artifact> resolve( MavenProject project, Collection<String> 
scopesToCollect,
+                                  Collection<String> scopesToResolve, 
MavenSession session,
+                                  Set<Artifact> ignoreableArtifacts )
+        throws ArtifactResolutionException, ArtifactNotFoundException
+    {
+        return resolveImpl( Collections.singleton( project ), scopesToCollect, 
scopesToResolve, session,
+                            getIgnorableArtifacts( ignoreableArtifacts ) );
+    }
+
+
+    private Set<Artifact> resolveImpl( Collection<? extends MavenProject> 
projects, Collection<String> scopesToCollect,
+                                       Collection<String> scopesToResolve, 
MavenSession session,
+                                       Set<String> projectIds )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
         Set<Artifact> resolved = new LinkedHashSet<Artifact>();
@@ -84,18 +97,18 @@ public class DefaultProjectDependenciesR
             return resolved;
         }
 
-        if ( ( scopesToCollect == null || scopesToCollect.isEmpty() )
-            && ( scopesToResolve == null || scopesToResolve.isEmpty() ) )
+        if ( ( scopesToCollect == null || scopesToCollect.isEmpty() ) &&
+            ( scopesToResolve == null || scopesToResolve.isEmpty() ) )
         {
             return resolved;
         }
 
         /*
-        
+
         Logic for transitve global exclusions
-         
+
         List<String> exclusions = new ArrayList<String>();
-        
+
         for ( Dependency d : project.getDependencies() )
         {
             if ( d.getExclusions() != null )
@@ -106,10 +119,10 @@ public class DefaultProjectDependenciesR
                 }
             }
         }
-        
+
         ArtifactFilter scopeFilter = new ScopeArtifactFilter( scope );
-        
-        ArtifactFilter filter; 
+
+        ArtifactFilter filter;
 
         if ( ! exclusions.isEmpty() )
         {
@@ -118,7 +131,7 @@ public class DefaultProjectDependenciesR
         else
         {
             filter = scopeFilter;
-        }        
+        }
         */
 
         CumulativeScopeArtifactFilter resolutionScopeFilter = new 
CumulativeScopeArtifactFilter( scopesToResolve );
@@ -126,22 +139,16 @@ public class DefaultProjectDependenciesR
         CumulativeScopeArtifactFilter collectionScopeFilter = new 
CumulativeScopeArtifactFilter( scopesToCollect );
         collectionScopeFilter = new CumulativeScopeArtifactFilter( 
collectionScopeFilter, resolutionScopeFilter );
 
-        ArtifactResolutionRequest request = new ArtifactResolutionRequest()
-            .setResolveRoot( false )
-            .setResolveTransitively( true )
-            .setCollectionFilter( collectionScopeFilter )
-            .setResolutionFilter( resolutionScopeFilter )
-            .setLocalRepository( session.getLocalRepository() )
-            .setOffline( session.isOffline() )
-            .setForceUpdate( session.getRequest().isUpdateSnapshots() )
-            .setCache( session.getRepositoryCache() );
+        ArtifactResolutionRequest request =
+            new ArtifactResolutionRequest().setResolveRoot( false 
).setResolveTransitively( true ).setCollectionFilter(
+                collectionScopeFilter ).setResolutionFilter( 
resolutionScopeFilter ).setLocalRepository(
+                session.getLocalRepository() ).setOffline( session.isOffline() 
).setForceUpdate(
+                session.getRequest().isUpdateSnapshots() ).setCache( 
session.getRepositoryCache() );
         request.setTransferListener( 
session.getRequest().getTransferListener() );
         request.setServers( session.getRequest().getServers() );
         request.setMirrors( session.getRequest().getMirrors() );
         request.setProxies( session.getRequest().getProxies() );
 
-        Set<String> projectIds = null;
-
         for ( MavenProject project : projects )
         {
             request.setArtifact( new ProjectArtifact( project ) );
@@ -157,16 +164,6 @@ public class DefaultProjectDependenciesR
             }
             catch ( MultipleArtifactsNotFoundException e )
             {
-                if ( projectIds == null )
-                {
-                    projectIds = new HashSet<String>( projects.size() * 2 );
-
-                    for ( MavenProject p : projects )
-                    {
-                        String key = ArtifactUtils.key( p.getGroupId(), 
p.getArtifactId(), p.getVersion() );
-                        projectIds.add( key );
-                    }
-                }
 
                 Collection<Artifact> missing = new HashSet<Artifact>( 
e.getMissingArtifacts() );
 
@@ -191,4 +188,29 @@ public class DefaultProjectDependenciesR
         return resolved;
     }
 
+
+    private Set<String> getIgnorableArtifacts( Collection<? extends 
MavenProject> projects )
+    {
+        Set<String> projectIds = new HashSet<String>( projects.size() * 2 );
+
+        for ( MavenProject p : projects )
+        {
+            String key = ArtifactUtils.key( p.getGroupId(), p.getArtifactId(), 
p.getVersion() );
+            projectIds.add( key );
+        }
+        return projectIds;
+    }
+
+    private Set<String> getIgnorableArtifacts( Iterable<Artifact> 
artifactIterable )
+    {
+        Set<String> projectIds = new HashSet<String>();
+
+        for ( Artifact artifact : artifactIterable )
+        {
+            String key = ArtifactUtils.key( artifact );
+            projectIds.add( key );
+        }
+        return projectIds;
+    }
+
 }

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java?rev=935334&r1=935333&r2=935334&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java
 Sun Apr 18 11:36:37 2010
@@ -33,10 +33,10 @@ public interface ProjectDependenciesReso
 
     /**
      * Resolves the transitive dependencies of the specified project.
-     * 
-     * @param project The project whose dependencies should be resolved, must 
not be {...@code null}.
+     *
+     * @param project         The project whose dependencies should be 
resolved, must not be {...@code null}.
      * @param scopesToResolve The dependency scopes that should be resolved, 
may be {...@code null}.
-     * @param session The current build session, must not be {...@code null}.
+     * @param session         The current build session, must not be {...@code 
null}.
      * @return The transitive dependencies of the specified project that match 
the requested scopes, never {...@code null}.
      */
     public Set<Artifact> resolve( MavenProject project, Collection<String> 
scopesToResolve, MavenSession session )
@@ -44,11 +44,11 @@ public interface ProjectDependenciesReso
 
     /**
      * Resolves the transitive dependencies of the specified project.
-     * 
-     * @param project The project whose dependencies should be resolved, must 
not be {...@code null}.
+     *
+     * @param project         The project whose dependencies should be 
resolved, must not be {...@code null}.
      * @param scopesToCollect The dependency scopes that should be collected, 
may be {...@code null}.
      * @param scopesToResolve The dependency scopes that should be collected 
and also resolved, may be {...@code null}.
-     * @param session The current build session, must not be {...@code null}.
+     * @param session         The current build session, must not be {...@code 
null}.
      * @return The transitive dependencies of the specified project that match 
the requested scopes, never {...@code null}.
      */
     public Set<Artifact> resolve( MavenProject project, Collection<String> 
scopesToCollect,
@@ -56,14 +56,30 @@ public interface ProjectDependenciesReso
         throws ArtifactResolutionException, ArtifactNotFoundException;
 
     /**
+     * Resolves the transitive dependencies of the specified project.
+     *
+     * @param project             The project whose dependencies should be 
resolved, must not be {...@code null}.
+     * @param scopesToCollect     The dependency scopes that should be 
collected, may be {...@code null}.
+     * @param scopesToResolve     The dependency scopes that should be 
collected and also resolved, may be {...@code null}.
+     * @param session             The current build session, must not be 
{...@code null}.
+     * @param ignoreableArtifacts Artifacts that need not be resolved
+     * @return The transitive dependencies of the specified project that match 
the requested scopes, never {...@code null}.
+     */
+    public Set<Artifact> resolve( MavenProject project, Collection<String> 
scopesToCollect,
+                                  Collection<String> scopesToResolve, 
MavenSession session,
+                                  Set<Artifact> ignoreableArtifacts )
+        throws ArtifactResolutionException, ArtifactNotFoundException;
+
+
+    /**
      * Resolves the transitive dependencies of the specified projects. Note 
that dependencies which can't be resolved
      * from any repository but are present among the set of specified projects 
will not cause an exception. Instead,
      * those unresolved artifacts will be returned in the result set, allowing 
the caller to take special care of
      * artifacts that haven't been build yet.
-     * 
+     *
      * @param projects The projects whose dependencies should be resolved, may 
be {...@code null}.
-     * @param scopes The dependency scopes that should be resolved, may be 
{...@code null}.
-     * @param session The current build session, must not be {...@code null}.
+     * @param scopes   The dependency scopes that should be resolved, may be 
{...@code null}.
+     * @param session  The current build session, must not be {...@code null}.
      * @return The transitive dependencies of the specified projects that 
match the requested scopes, never {...@code null}
      *         .
      */

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/BuilderCommon.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/BuilderCommon.java?rev=935334&r1=935333&r2=935334&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/BuilderCommon.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/BuilderCommon.java
 Sun Apr 18 11:36:37 2010
@@ -14,11 +14,15 @@
  */
 package org.apache.maven.lifecycle.internal;
 
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.execution.BuildFailure;
 import org.apache.maven.execution.ExecutionEvent;
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenSession;
-import org.apache.maven.lifecycle.*;
+import org.apache.maven.lifecycle.LifecycleExecutionException;
+import org.apache.maven.lifecycle.LifecycleNotFoundException;
+import org.apache.maven.lifecycle.LifecyclePhaseNotFoundException;
+import org.apache.maven.lifecycle.MavenExecutionPlan;
 import org.apache.maven.plugin.*;
 import org.apache.maven.plugin.prefix.NoPluginFoundForPrefixException;
 import org.apache.maven.plugin.version.PluginVersionResolutionException;
@@ -27,6 +31,8 @@ import org.codehaus.plexus.classworlds.r
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 
+import java.util.Set;
+
 /**
  * Common code that is shared by the LifecycleModuleBuilder and the 
LifeCycleWeaveBuilder
  *
@@ -63,7 +69,8 @@ public class BuilderCommon
         this.lifecycleDependencyResolver = lifecycleDependencyResolver;
     }
 
-    public MavenExecutionPlan resolveBuildPlan( MavenSession session, 
MavenProject project, TaskSegment taskSegment )
+    public MavenExecutionPlan resolveBuildPlan( MavenSession session, 
MavenProject project, TaskSegment taskSegment,
+                                                Set<Artifact> projectArtifacts 
)
         throws PluginNotFoundException, PluginResolutionException, 
LifecyclePhaseNotFoundException,
         PluginDescriptorParsingException, MojoNotFoundException, 
InvalidPluginDescriptorException,
         NoPluginFoundForPrefixException, LifecycleNotFoundException, 
PluginVersionResolutionException,
@@ -78,13 +85,14 @@ public class BuilderCommon
         // this later by looking at the build plan. Would be better to just 
batch download everything required
         // by the reactor.
 
-        lifecycleDependencyResolver.resolveDependencies( 
taskSegment.isAggregating(), project, session, executionPlan );
+        lifecycleDependencyResolver.resolveDependencies( 
taskSegment.isAggregating(), project, session, executionPlan,
+                                                         projectArtifacts );
         return executionPlan;
     }
 
 
     public void handleBuildError( final ReactorContext buildContext, final 
MavenSession rootSession,
-                                         final MavenProject mavenProject, 
final Exception e, final long buildStartTime )
+                                  final MavenProject mavenProject, final 
Exception e, final long buildStartTime )
     {
         buildContext.getResult().addException( e );
 

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java?rev=935334&r1=935333&r2=935334&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java
 Sun Apr 18 11:36:37 2010
@@ -62,11 +62,12 @@ public class LifecycleDependencyResolver
     }
 
     public void resolveDependencies( boolean aggregating, MavenProject 
currentProject,
-                                     MavenSession sessionForThisModule, 
MavenExecutionPlan executionPlan )
+                                     MavenSession sessionForThisModule, 
MavenExecutionPlan executionPlan,
+                                     Set<Artifact> projectArtifacts )
         throws LifecycleExecutionException
     {
         List<MavenProject> projectsToResolve = getProjects( currentProject, 
sessionForThisModule, aggregating );
-        resolveDependencies( aggregating, sessionForThisModule, executionPlan, 
projectsToResolve );
+        resolveDependencies( aggregating, sessionForThisModule, executionPlan, 
projectsToResolve, projectArtifacts );
     }
 
     public static List<MavenProject> getProjects( MavenProject project, 
MavenSession session, boolean aggregator )
@@ -88,8 +89,8 @@ public class LifecycleDependencyResolver
         if ( dependenctContext.isSameButUpdatedProject( session ) )
         {
             resolveProjectDependencies( dependenctContext.getLastProject(), 
dependenctContext.getScopesToCollect(),
-                                        
dependenctContext.getScopesToResolve(), session,
-                                        dependenctContext.isAggregating() );
+                                         
dependenctContext.getScopesToResolve(), session,
+                                         dependenctContext.isAggregating(), 
new HashSet<Artifact>() );
         }
 
         dependenctContext.setLastProject( session.getCurrentProject() );
@@ -97,30 +98,25 @@ public class LifecycleDependencyResolver
     }
 
     private void resolveDependencies( boolean aggregating, MavenSession 
session, MavenExecutionPlan executionPlan,
-                                      List<MavenProject> projectsToResolve )
+                                       List<MavenProject> projectsToResolve, 
Set<Artifact> projectArtifacts )
         throws LifecycleExecutionException
     {
         for ( MavenProject project : projectsToResolve )
         {
-            resolveDependencies( project, aggregating, session, executionPlan 
);
+            resolveProjectDependencies( project, 
executionPlan.getRequiredCollectionScopes(),
+                                         
executionPlan.getRequiredResolutionScopes(), session, aggregating,
+                                         projectArtifacts );
         }
     }
 
-    private void resolveDependencies( MavenProject project, boolean 
aggregating, MavenSession session,
-                                      MavenExecutionPlan executionPlan )
-        throws LifecycleExecutionException
-    {
-        resolveProjectDependencies( project, 
executionPlan.getRequiredCollectionScopes(),
-                                    
executionPlan.getRequiredResolutionScopes(), session, aggregating );
-    }
-
     private void resolveProjectDependencies( MavenProject project, 
Collection<String> scopesToCollect,
-                                             Collection<String> 
scopesToResolve, MavenSession session,
-                                             boolean aggregating )
+                                              Collection<String> 
scopesToResolve, MavenSession session,
+                                              boolean aggregating, 
Set<Artifact> projectArtifacts )
         throws LifecycleExecutionException
     {
         Set<Artifact> artifacts =
-            getProjectDependencies( project, scopesToCollect, scopesToResolve, 
session, aggregating );
+            getProjectDependencies( project, scopesToCollect, scopesToResolve, 
session, aggregating,
+                                    projectArtifacts );
         updateProjectArtifacts( project, artifacts );
     }
 
@@ -136,7 +132,7 @@ public class LifecycleDependencyResolver
 
     private Set<Artifact> getProjectDependencies( MavenProject project, 
Collection<String> scopesToCollect,
                                                   Collection<String> 
scopesToResolve, MavenSession session,
-                                                  boolean aggregating )
+                                                  boolean aggregating, 
Set<Artifact> projectArtifacts )
         throws LifecycleExecutionException
     {
         Set<Artifact> artifacts;
@@ -144,7 +140,8 @@ public class LifecycleDependencyResolver
         {
             try
             {
-                artifacts = projectDependenciesResolver.resolve( project, 
scopesToCollect, scopesToResolve, session );
+                artifacts = projectDependenciesResolver.resolve( project , 
scopesToCollect,
+                                                                 
scopesToResolve, session, projectArtifacts );
             }
             catch ( MultipleArtifactsNotFoundException e )
             {
@@ -153,24 +150,7 @@ public class LifecycleDependencyResolver
                 * plugins that require dependency resolution although they 
usually run in phases of the build where project
                 * artifacts haven't been assembled yet. The prime example of 
this is "mvn release:prepare".
                 */
-                if ( aggregating && areAllArtifactsInReactor( 
session.getProjects(), e.getMissingArtifacts() ) )
-                {
-                    logger.warn( "The following artifacts could not be 
resolved at this point of the build" +
-                        " but seem to be part of the reactor:" );
-
-                    for ( Artifact artifact : e.getMissingArtifacts() )
-                    {
-                        logger.warn( "o " + artifact.getId() );
-                    }
-
-                    logger.warn( "Try running the build up to the lifecycle 
phase \"package\"" );
-
-                    artifacts = new LinkedHashSet<Artifact>( 
e.getResolvedArtifacts() );
-                }
-                else
-                {
-                    throw e;
-                }
+                artifacts = handleException( session, aggregating, e );
             }
 
             return artifacts;
@@ -187,6 +167,36 @@ public class LifecycleDependencyResolver
     }
 
 
+    private Set<Artifact> handleException( MavenSession session, boolean 
aggregating,
+                                           MultipleArtifactsNotFoundException 
e )
+        throws MultipleArtifactsNotFoundException
+    {
+        Set<Artifact> artifacts;/*
+        * MNG-2277, the check below compensates for our bad plugin support 
where we ended up with aggregator
+        * plugins that require dependency resolution although they usually run 
in phases of the build where project
+        * artifacts haven't been assembled yet. The prime example of this is 
"mvn release:prepare".
+        */
+        if ( aggregating && areAllArtifactsInReactor( session.getProjects(), 
e.getMissingArtifacts() ) )
+        {
+            logger.warn( "The following artifacts could not be resolved at 
this point of the build" +
+                " but seem to be part of the reactor:" );
+
+            for ( Artifact artifact : e.getMissingArtifacts() )
+            {
+                logger.warn( "o " + artifact.getId() );
+            }
+
+            logger.warn( "Try running the build up to the lifecycle phase 
\"package\"" );
+
+            artifacts = new LinkedHashSet<Artifact>( e.getResolvedArtifacts() 
);
+        }
+        else
+        {
+            throw e;
+        }
+        return artifacts;
+    }
+
     private Set<Artifact> getDependencyArtifacts( MavenProject project, 
Set<Artifact> artifacts )
     {
         Set<String> directDependencies = new HashSet<String>( 
project.getDependencies().size() * 2 );

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleExecutionPlanCalculatorImpl.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleExecutionPlanCalculatorImpl.java?rev=935334&r1=935333&r2=935334&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleExecutionPlanCalculatorImpl.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleExecutionPlanCalculatorImpl.java
 Sun Apr 18 11:36:37 2010
@@ -86,27 +86,61 @@ public class LifecycleExecutionPlanCalcu
         Set<String> requiredDependencyResolutionScopes = new TreeSet<String>();
         Set<String> requiredDependencyCollectionScopes = new TreeSet<String>();
 
-        final List<MojoExecution> executions =
-            calculateExecutionPlan( session, project, tasks, 
requiredDependencyResolutionScopes,
-                                    requiredDependencyCollectionScopes );
+        lifecyclePluginResolver.resolveMissingPluginVersions( project, session 
);
+
+        final List<MojoExecution> executions = calculateMojoExecutions( 
session, project, tasks );
+
+        setupMojoExections( session, project, 
requiredDependencyResolutionScopes, requiredDependencyCollectionScopes,
+                            executions );
+
         final List<ExecutionPlanItem> planItem = 
defaultLifeCycles.createExecutionPlanItem( project, executions );
 
-        return new MavenExecutionPlan( requiredDependencyResolutionScopes, 
requiredDependencyCollectionScopes,
-                                       planItem, defaultLifeCycles );
+        return new MavenExecutionPlan( requiredDependencyResolutionScopes, 
requiredDependencyCollectionScopes, planItem,
+                                       defaultLifeCycles );
 
 
     }
 
-    public List<MojoExecution> calculateExecutionPlan( MavenSession session, 
MavenProject project, List<Object> tasks,
-                                                       Set<String> 
requiredDependencyResolutionScopes,
-                                                       Set<String> 
requiredDependencyCollectionScopes )
-        throws PluginNotFoundException, PluginResolutionException, 
LifecyclePhaseNotFoundException,
-        PluginDescriptorParsingException, MojoNotFoundException, 
InvalidPluginDescriptorException,
-        NoPluginFoundForPrefixException, LifecycleNotFoundException, 
PluginVersionResolutionException
+    private void setupMojoExections( MavenSession session, MavenProject 
project,
+                                     Set<String> 
requiredDependencyResolutionScopes,
+                                     Set<String> 
requiredDependencyCollectionScopes,
+                                     List<MojoExecution> mojoExecutions )
+        throws PluginNotFoundException, PluginResolutionException, 
PluginDescriptorParsingException,
+        MojoNotFoundException, InvalidPluginDescriptorException, 
NoPluginFoundForPrefixException,
+        LifecyclePhaseNotFoundException, LifecycleNotFoundException, 
PluginVersionResolutionException
     {
-        lifecyclePluginResolver.resolveMissingPluginVersions( project, session 
);
+        for ( MojoExecution mojoExecution : mojoExecutions )
+        {
+            MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
 
-        List<MojoExecution> mojoExecutions = new ArrayList<MojoExecution>();
+            if ( mojoDescriptor == null )
+            {
+                mojoDescriptor = pluginManager.getMojoDescriptor( 
mojoExecution.getPlugin(), mojoExecution.getGoal(),
+                                                                  
DefaultRepositoryRequest.getRepositoryRequest(
+                                                                      session, 
project ) );
+
+                mojoExecution.setMojoDescriptor( mojoDescriptor );
+            }
+
+            populateMojoExecutionConfiguration( project, mojoExecution,
+                                                
MojoExecution.Source.CLI.equals( mojoExecution.getSource() ) );
+
+            finalizeMojoConfiguration( mojoExecution );
+
+            calculateForkedExecutions( mojoExecution, session, project, new 
HashSet<MojoDescriptor>() );
+
+            collectDependencyRequirements( requiredDependencyResolutionScopes, 
requiredDependencyCollectionScopes,
+                                           mojoExecution );
+        }
+    }
+
+    private List<MojoExecution> calculateMojoExecutions( MavenSession session, 
MavenProject project,
+                                                         List<Object> tasks )
+        throws PluginNotFoundException, PluginResolutionException, 
PluginDescriptorParsingException,
+        MojoNotFoundException, NoPluginFoundForPrefixException, 
InvalidPluginDescriptorException,
+        PluginVersionResolutionException, LifecyclePhaseNotFoundException
+    {
+        final List<MojoExecution> mojoExecutions = new 
ArrayList<MojoExecution>();
 
         for ( Object task : tasks )
         {
@@ -138,31 +172,6 @@ public class LifecycleExecutionPlanCalcu
                 throw new IllegalStateException( "unexpected task " + task );
             }
         }
-
-        for ( MojoExecution mojoExecution : mojoExecutions )
-        {
-            MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
-
-            if ( mojoDescriptor == null )
-            {
-                mojoDescriptor = pluginManager.getMojoDescriptor( 
mojoExecution.getPlugin(), mojoExecution.getGoal(),
-                                                                  
DefaultRepositoryRequest.getRepositoryRequest(
-                                                                      session, 
project ) );
-
-                mojoExecution.setMojoDescriptor( mojoDescriptor );
-            }
-
-            populateMojoExecutionConfiguration( project, mojoExecution,
-                                                
MojoExecution.Source.CLI.equals( mojoExecution.getSource() ) );
-
-            finalizeMojoConfiguration( mojoExecution );
-
-            calculateForkedExecutions( mojoExecution, session, project, new 
HashSet<MojoDescriptor>() );
-
-            collectDependencyRequirements( requiredDependencyResolutionScopes, 
requiredDependencyCollectionScopes,
-                                           mojoExecution );
-        }
-
         return mojoExecutions;
     }
 

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java?rev=935334&r1=935333&r2=935334&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
 Sun Apr 18 11:36:37 2010
@@ -15,6 +15,7 @@
 
 package org.apache.maven.lifecycle.internal;
 
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.execution.BuildSuccess;
 import org.apache.maven.execution.ExecutionEvent;
 import org.apache.maven.execution.MavenSession;
@@ -23,6 +24,8 @@ import org.apache.maven.project.MavenPro
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 
+import java.util.HashSet;
+
 /**
  * Builds one or more lifecycles for a full module
  *
@@ -72,7 +75,8 @@ public class LifecycleModuleBuilder
             eventCatapult.fire( ExecutionEvent.Type.ProjectStarted, session, 
null );
 
             BuilderCommon.attachToThread( currentProject );
-            MavenExecutionPlan executionPlan = builderCommon.resolveBuildPlan( 
session, currentProject, taskSegment );
+            MavenExecutionPlan executionPlan =
+                builderCommon.resolveBuildPlan( session, currentProject, 
taskSegment, new HashSet<Artifact>() );
 
             DependencyContext dependencyContext = new DependencyContext( 
executionPlan, isAggregating );
             mojoExecutor.execute( session, executionPlan.getMojoExecutions(), 
reactorContext.getProjectIndex(),

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleWeaveBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleWeaveBuilder.java?rev=935334&r1=935333&r2=935334&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleWeaveBuilder.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleWeaveBuilder.java
 Sun Apr 18 11:36:37 2010
@@ -29,8 +29,8 @@ import org.codehaus.plexus.component.ann
 import org.codehaus.plexus.logging.Logger;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -73,13 +73,9 @@ public class LifecycleWeaveBuilder
     private Logger logger;
 
     @Requirement
-    private LifecycleDependencyResolver lifecycleDependencyResolver;
-
-    @Requirement
     private ExecutionEventCatapult eventCatapult;
 
-    private final Map<MavenProject, MavenExecutionPlan> executionPlans =
-        Collections.synchronizedMap( new HashMap<MavenProject, 
MavenExecutionPlan>() );
+    private Map<MavenProject, MavenExecutionPlan> executionPlans = new 
HashMap<MavenProject, MavenExecutionPlan>( );
 
 
     @SuppressWarnings({"UnusedDeclaration"})
@@ -87,9 +83,8 @@ public class LifecycleWeaveBuilder
     {
     }
 
-    public LifecycleWeaveBuilder( MojoExecutor mojoExecutor, BuilderCommon 
builderCommon, Logger logger,
-                                  LifecycleDependencyResolver 
lifecycleDependencyResolver,
-                                  ExecutionEventCatapult eventCatapult )
+    public LifecycleWeaveBuilder(MojoExecutor mojoExecutor, BuilderCommon 
builderCommon, Logger logger,
+                                 ExecutionEventCatapult eventCatapult)
     {
         this.mojoExecutor = mojoExecutor;
         this.builderCommon = builderCommon;
@@ -110,14 +105,32 @@ public class LifecycleWeaveBuilder
             for ( TaskSegment taskSegment : taskSegments )
             {
                 ProjectBuildList segmentChunks = 
projectBuilds.getByTaskSegment( taskSegment );
-                ThreadOutputMuxer muxer = null;  // new ThreadOutputMuxer( 
segmentChunks, System.out );
+                    ThreadOutputMuxer muxer = null;  // new ThreadOutputMuxer( 
segmentChunks, System.out );
+                Set<String> projectArtifacts = new HashSet<String>();
+                Set<Artifact> projectArtifactsA = new HashSet<Artifact>();
+                for (ProjectSegment segmentChunk : segmentChunks) {
+                    Artifact artifact = 
segmentChunk.getProject().getArtifact();
+                    if (artifact != null) {
+                        projectArtifacts.add( ArtifactUtils.key(artifact));
+                        projectArtifactsA.add( artifact);
+                    }
+                }
                 for ( ProjectSegment projectBuild : segmentChunks )
                 {
                     try
                     {
                         MavenExecutionPlan executionPlan =
                             builderCommon.resolveBuildPlan( 
projectBuild.getSession(), projectBuild.getProject(),
-                                                            
projectBuild.getTaskSegment() );
+                                                            
projectBuild.getTaskSegment(), projectArtifactsA );
+                        for (Artifact dependency : 
projectBuild.getProject().getDependencyArtifacts()) {
+                            String s = ArtifactUtils.key(dependency);
+                            if ( projectArtifacts.contains(s)){
+                                dependency.setFile( null);
+                                dependency.setResolved( false);
+                                dependency.setRepository( null);
+                            }
+                        }
+                        
                         executionPlans.put( projectBuild.getProject(), 
executionPlan );
                         DependencyContext dependencyContext =
                             new DependencyContext( executionPlan, 
projectBuild.getTaskSegment().isAggregating() );
@@ -182,8 +195,7 @@ public class LifecycleWeaveBuilder
 
                 try
                 {
-                    while ( current != null && !reactorBuildStatus.isHalted() 
&&
-                        !reactorBuildStatus.isBlackListed( 
projectBuild.getProject() ) )
+                    while (current != null && 
!reactorBuildStatus.isHaltedOrBlacklisted( projectBuild.getProject() ))
                     {
                         PhaseRecorder phaseRecorder = new PhaseRecorder( 
projectBuild.getProject() );
 
@@ -191,19 +203,7 @@ public class LifecycleWeaveBuilder
                             concurrentBuildLogger.createBuildLogItem( 
projectBuild.getProject(), current );
                         final Schedule schedule = current.getSchedule();
 
-                        if ( schedule != null && schedule.isMojoSynchronized() 
)
-                        {
-                            synchronized ( current.getPlugin() )
-                            {
-                                buildExecutionPlanItem( reactorContext, 
current, projectBuild, dependencyContext,
-                                                        phaseRecorder );
-                            }
-                        }
-                        else
-                        {
-                            buildExecutionPlanItem( reactorContext, current, 
projectBuild, dependencyContext,
-                                                    phaseRecorder );
-                        }
+                        buildExecutionPlanItem(current, phaseRecorder, 
schedule, reactorContext, projectBuild, dependencyContext);
 
                         current.setComplete();
                         builtLogItem.setComplete();
@@ -212,62 +212,12 @@ public class LifecycleWeaveBuilder
                         if ( nextPlanItem != null )
                         {
 
-                            boolean mustReResolved = false;
-
                             final Schedule scheduleOfNext = 
nextPlanItem.getSchedule();
                             if ( scheduleOfNext == null || 
!scheduleOfNext.isParallel() )
                             {
-                                for ( MavenProject upstreamProject : 
projectBuild.getImmediateUpstreamProjects() )
-                                {
-                                    final MavenExecutionPlan upstreamPlan = 
executionPlans.get( upstreamProject );
-                                    final String nextPhase = 
nextPlanItem.getLifecyclePhase();
-                                    final ExecutionPlanItem inSchedule = 
upstreamPlan.findLastInPhase( nextPhase );
-
-                                    if ( inSchedule != null )
-                                    {
-                                        if ( 
upstreamPhaseModifiesArtifactResolutionState( inSchedule ) )
-                                        {
-                                            String key = ArtifactUtils.key( 
upstreamProject.getGroupId(),
-                                                                            
upstreamProject.getArtifactId(),
-                                                                            
upstreamProject.getVersion() );
-                                            final Set<Artifact> deps =
-                                                
projectBuild.getProject().getDependencyArtifacts();
-                                            for ( Artifact dep : deps )
-                                            {
-                                                String depKey =
-                                                    ArtifactUtils.key( 
dep.getGroupId(), dep.getArtifactId(),
-                                                                       
dep.getVersion() );
-                                                if ( key.equals( depKey ) )
-                                                {
-                                                    dep.setResolved( false );
-                                                    mustReResolved = true;
-                                                }
-                                            }
-                                        }
-                                        long startWait = 
System.currentTimeMillis();
-                                        inSchedule.waitUntilDone();
-                                        builtLogItem.addWait( upstreamProject, 
inSchedule, startWait );
-                                    }
-                                    else if ( !upstreamPlan.containsPhase( 
nextPhase ) )
-                                    {
-                                        // Still a bit of a kludge; if we 
cannot connect in a sensible way to
-                                        // the upstream build plan we just 
revert to waiting for it all to
-                                        // complete. Real problem is per-mojo 
phase->lifecycle mapping
-                                        builtLogItem.addDependency( 
upstreamProject, "No phase tracking possible " );
-                                        upstreamPlan.waitUntilAllDone();
-                                    }
-                                    else
-                                    {
-                                        builtLogItem.addDependency( 
upstreamProject, "No schedule" );
-                                    }
-                                }
-                            }
-                            if ( mustReResolved )
-                            {
-                                
lifecycleDependencyResolver.resolveDependencies( false, 
projectBuild.getProject(),
-                                                                               
  projectBuild.getSession(),
-                                                                               
  executionPlan );
+                                
waitForAppropriateUpstreamExecutionsToFinish(builtLogItem, nextPlanItem, 
projectBuild);
                             }
+                            reResolveReactorDependencies(nextPlanItem, 
projectBuild);
                         }
                         current = nextPlanItem;
                     }
@@ -293,15 +243,139 @@ public class LifecycleWeaveBuilder
                 }
                 return null;
             }
+
         };
     }
 
-    private boolean upstreamPhaseModifiesArtifactResolutionState( 
ExecutionPlanItem inSchedule )
+    private void reResolveReactorDependencies(ExecutionPlanItem nextPlanItem, 
ProjectSegment projectBuild) {
+        if ( requiresReResolutionOfUpstreamReactorArtifacts( nextPlanItem ) )
+        {
+            reresolveUpstreamProjectArtifacts(projectBuild);
+        }
+        else if (requiresReResolutionOfUpstreamTestScopedReactorArtifacts( 
nextPlanItem))
+        {
+            reresolveUpstreamTestScopedArtifacts( projectBuild);
+        }
+    }
+
+    private void waitForAppropriateUpstreamExecutionsToFinish(BuildLogItem 
builtLogItem, ExecutionPlanItem nextPlanItem, ProjectSegment projectBuild) 
throws InterruptedException {
+        for ( MavenProject upstreamProject : 
projectBuild.getImmediateUpstreamProjects() )
+        {
+            final MavenExecutionPlan upstreamPlan = executionPlans.get( 
upstreamProject );
+            final String nextPhase = nextPlanItem.getLifecyclePhase();
+            final ExecutionPlanItem inSchedule = upstreamPlan.findLastInPhase( 
nextPhase );
+
+            if ( inSchedule != null )
+            {
+                long startWait = System.currentTimeMillis();
+                inSchedule.waitUntilDone();
+                builtLogItem.addWait( upstreamProject, inSchedule, startWait );
+            }
+            else if ( !upstreamPlan.containsPhase( nextPhase ) )
+            {
+                // Still a bit of a kludge; if we cannot connect in a sensible 
way to
+                // the upstream build plan we just revert to waiting for it 
all to
+                // complete. Real problem is per-mojo phase->lifecycle mapping
+                builtLogItem.addDependency( upstreamProject, "No phase 
tracking possible " );
+                upstreamPlan.waitUntilAllDone();
+            }
+            else
+            {
+                builtLogItem.addDependency( upstreamProject, "No schedule" );
+            }
+        }
+    }
+
+    private void reresolveUpstreamProjectArtifacts(ProjectSegment 
projectBuild) {
+        for ( MavenProject upstreamProject : 
projectBuild.getTransitiveUpstreamProjects() ){
+            Artifact upStreamArtifact = upstreamProject.getArtifact();
+            Artifact dependencyArtifact =  
findDependency(projectBuild.getProject(), upStreamArtifact);
+            if (dependencyArtifact != null){
+                dependencyArtifact.setFile( upStreamArtifact.getFile());
+                dependencyArtifact.setResolved( true );
+                dependencyArtifact.setRepository( 
upStreamArtifact.getRepository());
+            }
+
+        }
+    }
+
+    private void reresolveUpstreamTestScopedArtifacts(ProjectSegment 
projectBuild) {
+        for ( MavenProject upstreamProject : 
projectBuild.getTransitiveUpstreamProjects() ){
+            Artifact upStreamArtifact = 
findTestScopedArtifact(upstreamProject);
+            Artifact dependencyArtifact =  
findDependency(projectBuild.getProject(), upStreamArtifact);
+            if (dependencyArtifact != null){
+                dependencyArtifact.setFile( upStreamArtifact.getFile());
+                dependencyArtifact.setResolved( upStreamArtifact.isResolved());
+                dependencyArtifact.setRepository( 
upStreamArtifact.getRepository());
+            }
+
+        }
+    }
+
+    private Artifact findTestScopedArtifact(MavenProject upstreamProject) {
+        if ( upstreamProject == null){
+            return null;
+        }
+        
+        List<Artifact> artifactList = upstreamProject.getAttachedArtifacts();
+        for (Artifact artifact : artifactList) {
+            if (Artifact.SCOPE_TEST.equals( artifact.getScope())){
+                return artifact;
+            }
+        }
+        return null;
+    }
+
+    private static Artifact findDependency(MavenProject project, Artifact 
upStreamArtifact) {
+        if (upStreamArtifact == null){
+            return null;
+        }
+        
+        String key = ArtifactUtils.key( upStreamArtifact.getGroupId(),
+                                        upStreamArtifact.getArtifactId(),
+                                        upStreamArtifact.getVersion() );
+        final Set<Artifact> deps = project.getDependencyArtifacts();
+        for ( Artifact dep : deps )
+        {
+            String depKey = ArtifactUtils.key(dep.getGroupId(), 
dep.getArtifactId(), dep.getVersion());
+            if ( key.equals( depKey ) )
+            {
+                return dep;
+            }
+        }
+        return null;
+
+    }
+
+    private boolean requiresReResolutionOfUpstreamReactorArtifacts( 
ExecutionPlanItem nextExecutionPlanItem )
     {
-        final String phase = inSchedule.getLifecyclePhase();
-        return "install".equals( phase ) || "compile".equals( phase ) || 
"test-compile".equals( phase );
+        final String phase = nextExecutionPlanItem.getLifecyclePhase();
+        return "package".equals(phase) ||  "install".equals( phase ) || 
"compile".equals( phase );
     }
 
+    private boolean requiresReResolutionOfUpstreamTestScopedReactorArtifacts( 
ExecutionPlanItem nextExecutionPlanItem )
+    {
+        final String phase = nextExecutionPlanItem.getLifecyclePhase();
+        return "package".equals(phase) || "install".equals( phase ) || 
"compile".equals( phase ) || "test-compile".equals( phase );
+    }
+
+    private void buildExecutionPlanItem(ExecutionPlanItem current, 
PhaseRecorder phaseRecorder, Schedule schedule, ReactorContext reactorContext, 
ProjectSegment projectBuild, DependencyContext dependencyContext) throws 
LifecycleExecutionException {
+        if ( schedule != null && schedule.isMojoSynchronized() )
+        {
+            synchronized ( current.getPlugin() )
+            {
+                buildExecutionPlanItem( reactorContext, current, projectBuild, 
dependencyContext,
+                                        phaseRecorder );
+            }
+        }
+        else
+        {
+            buildExecutionPlanItem( reactorContext, current, projectBuild, 
dependencyContext,
+                                    phaseRecorder );
+        }
+    }
+
+
     private void buildExecutionPlanItem( ReactorContext reactorContext, 
ExecutionPlanItem node,
                                          ProjectSegment projectBuild, 
DependencyContext dependencyContext,
                                          PhaseRecorder phaseRecorder )

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ProjectSegment.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ProjectSegment.java?rev=935334&r1=935333&r2=935334&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ProjectSegment.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ProjectSegment.java
 Sun Apr 18 11:36:37 2010
@@ -53,12 +53,18 @@ public final class ProjectSegment
 
     private final MavenSession session;
 
+    private final List<MavenProject> nonTransitiveUpstreamProjects;
+
+    private final List<MavenProject> transitiveUpstreamProjects;
 
     public ProjectSegment( MavenProject project, TaskSegment taskSegment, 
MavenSession copiedSession )
     {
         this.project = project;
         this.taskSegment = taskSegment;
         this.session = copiedSession;
+        final ProjectDependencyGraph dependencyGraph = 
getSession().getProjectDependencyGraph();
+        nonTransitiveUpstreamProjects = dependencyGraph.getUpstreamProjects( 
getProject(), false );
+        transitiveUpstreamProjects = dependencyGraph.getUpstreamProjects( 
getProject(), true );
     }
 
     public MavenSession getSession()
@@ -78,8 +84,12 @@ public final class ProjectSegment
 
     public List<MavenProject> getImmediateUpstreamProjects()
     {
-        final ProjectDependencyGraph dependencyGraph = 
getSession().getProjectDependencyGraph();
-        return dependencyGraph.getUpstreamProjects( getProject(), false );
+        return nonTransitiveUpstreamProjects;
+    }
+
+    public List<MavenProject> getTransitiveUpstreamProjects()
+    {
+        return transitiveUpstreamProjects;
     }
 
     @Override

Modified: 
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/BuilderCommonTest.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/BuilderCommonTest.java?rev=935334&r1=935333&r2=935334&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/BuilderCommonTest.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/BuilderCommonTest.java
 Sun Apr 18 11:36:37 2010
@@ -16,6 +16,7 @@
 package org.apache.maven.lifecycle.internal;
 
 import junit.framework.TestCase;
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.lifecycle.MavenExecutionPlan;
 import 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub;
@@ -23,6 +24,8 @@ import org.apache.maven.lifecycle.intern
 import 
org.apache.maven.lifecycle.internal.stub.ProjectDependenciesResolverStub;
 import org.apache.maven.lifecycle.internal.stub.ProjectDependencyGraphStub;
 
+import java.util.HashSet;
+
 /**
  * @author Kristian Rosenvold
  */
@@ -40,7 +43,8 @@ public class BuilderCommonTest
 
         final BuilderCommon builderCommon = getBuilderCommon();
         final MavenExecutionPlan plan =
-            builderCommon.resolveBuildPlan( session1, 
ProjectDependencyGraphStub.A, taskSegment1 );
+            builderCommon.resolveBuildPlan( session1, 
ProjectDependencyGraphStub.A, taskSegment1,
+                                            new HashSet<Artifact>() );
         assertEquals( 
LifecycleExecutionPlanCalculatorStub.getProjectAExceutionPlan().size(), 
plan.size() );
 
     }

Modified: 
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/LifecycleWeaveBuilderTest.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/LifecycleWeaveBuilderTest.java?rev=935334&r1=935333&r2=935334&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/LifecycleWeaveBuilderTest.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/LifecycleWeaveBuilderTest.java
 Sun Apr 18 11:36:37 2010
@@ -122,8 +122,7 @@ public class LifecycleWeaveBuilderTest
         final LoggerStub loggerStub = new LoggerStub();
         final LifecycleDependencyResolver lifecycleDependencyResolver =
             new LifecycleDependencyResolver( new 
ProjectDependenciesResolverStub(), loggerStub );
-        return new LifecycleWeaveBuilder( mojoExecutor, builderCommon, 
loggerStub, lifecycleDependencyResolver,
-                                          new ExecutionEventCatapultStub() );
+        return new LifecycleWeaveBuilder( mojoExecutor, builderCommon, 
loggerStub, new ExecutionEventCatapultStub() );
     }
 
     private BuilderCommon getBuilderCommon()

Modified: 
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/ProjectDependenciesResolverStub.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/ProjectDependenciesResolverStub.java?rev=935334&r1=935333&r2=935334&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/ProjectDependenciesResolverStub.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/ProjectDependenciesResolverStub.java
 Sun Apr 18 11:36:37 2010
@@ -51,4 +51,12 @@ public class ProjectDependenciesResolver
     {
         return new HashSet<Artifact>();
     }
+
+    public Set<Artifact> resolve( MavenProject project, Collection<String> 
scopesToCollect,
+                                  Collection<String> scopesToResolve, 
MavenSession session,
+                                  Set<Artifact> ignoreableArtifacts )
+        throws ArtifactResolutionException, ArtifactNotFoundException
+    {
+        return new HashSet<Artifact>();
+    }
 }

Modified: 
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/ProjectDependencyGraphStub.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/ProjectDependencyGraphStub.java?rev=935334&r1=935333&r2=935334&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/ProjectDependencyGraphStub.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/ProjectDependencyGraphStub.java
 Sun Apr 18 11:36:37 2010
@@ -190,10 +190,10 @@ public class ProjectDependencyGraphStub
 
     public List<MavenProject> getUpstreamProjects( MavenProject project, 
boolean transitive )
     {
-        if ( transitive )
+        /*  if ( transitive )
         {
             throw new RuntimeException( "Not implemented yet" );
-        }
+        }*/
         List<MavenProject> result = new ArrayList<MavenProject>();
         final List<Dependency> dependencies = getDependencies();
         for ( Dependency dependency : dependencies )


Reply via email to