You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2009/05/27 21:45:33 UTC

svn commit: r779283 - in /maven/components/branches/MNG-2766: maven-compat/src/main/java/org/apache/maven/artifact/ maven-compat/src/main/java/org/apache/maven/artifact/metadata/ maven-compat/src/main/java/org/apache/maven/artifact/resolver/ maven-comp...

Author: jvanzyl
Date: Wed May 27 19:45:32 2009
New Revision: 779283

URL: http://svn.apache.org/viewvc?rev=779283&view=rev
Log:
o make a separate project dependencies downloader where the scope and exclusions can be taken into account

Added:
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java   (with props)
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java   (with props)
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java   (with props)
    maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java   (with props)
    maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/
    maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/project-with-exclusions/
    maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/project-with-exclusions/pom.xml   (with props)
Modified:
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java
    maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/deployer/SimpleArtifactMetadataSource.java
    maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/metadata/TestMetadataSource.java
    maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
    maven/components/branches/MNG-2766/maven-core/src/main/resources/META-INF/plexus/components.xml
    maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
    maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/TestMetadataSource.java

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java Wed May 27 19:45:32 2009
@@ -78,9 +78,14 @@
     private List<ArtifactVersion> availableVersions;
 
     private Map<Object,ArtifactMetadata> metadataMap;
-
+    
     private boolean optional;
 
+    public DefaultArtifact( String groupId, String artifactId, String version, String scope, String type, String classifier, ArtifactHandler artifactHandler )
+    {
+        this( groupId, artifactId, VersionRange.createFromVersion( version ), scope, type, classifier, artifactHandler, false );
+    }
+    
     public DefaultArtifact( String groupId, String artifactId, VersionRange versionRange, String scope, String type, String classifier, ArtifactHandler artifactHandler )
     {
         this( groupId, artifactId, versionRange, scope, type, classifier, artifactHandler, false );

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java Wed May 27 19:45:32 2009
@@ -23,6 +23,7 @@
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.artifact.versioning.ArtifactVersion;
 
 /**

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java Wed May 27 19:45:32 2009
@@ -505,7 +505,7 @@
         // We want to send the root artifact back in the result but we need to do this after the other dependencies
         // have been resolved.
         if ( request.isResolveRoot() )
-        {
+        {            
             // Add the root artifact (as the first artifact to retain logical order of class path!)
             Set<Artifact> allArtifacts = new LinkedHashSet<Artifact>();
             allArtifacts.add( rootArtifact );

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java Wed May 27 19:45:32 2009
@@ -83,7 +83,7 @@
     public void addDependencies( Set<Artifact> artifacts, List<ArtifactRepository> remoteRepositories, ArtifactFilter filter )
         throws CyclicDependencyException, OverConstrainedVersionException
     {
-        if ( !artifacts.isEmpty() )
+        if ( artifacts != null && !artifacts.isEmpty() )
         {
             children = new ArrayList<ResolutionNode>( artifacts.size() );
 

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java Wed May 27 19:45:32 2009
@@ -34,8 +34,17 @@
 public class AndArtifactFilter
     implements ArtifactFilter
 {
-    private final List<ArtifactFilter> filters = new ArrayList<ArtifactFilter>();
+    private List<ArtifactFilter> filters; 
 
+    public AndArtifactFilter()
+    {        
+    }
+    
+    public AndArtifactFilter( List<ArtifactFilter> filters )
+    {
+        this.filters = filters;
+    }
+    
     public boolean include( Artifact artifact )
     {
         boolean include = true;
@@ -52,6 +61,11 @@
 
     public void add( ArtifactFilter artifactFilter )
     {
+        if ( filters == null )
+        {
+            filters = new ArrayList<ArtifactFilter>();
+        }
+        
         filters.add( artifactFilter );
     }
 }

Modified: maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/deployer/SimpleArtifactMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/deployer/SimpleArtifactMetadataSource.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/deployer/SimpleArtifactMetadataSource.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/deployer/SimpleArtifactMetadataSource.java Wed May 27 19:45:32 2009
@@ -27,6 +27,7 @@
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.metadata.ResolutionGroup;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 

Modified: maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/metadata/TestMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/metadata/TestMetadataSource.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/metadata/TestMetadataSource.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/metadata/TestMetadataSource.java Wed May 27 19:45:32 2009
@@ -7,6 +7,7 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;

Modified: maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java Wed May 27 19:45:32 2009
@@ -33,6 +33,7 @@
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.metadata.ResolutionGroup;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.artifact.versioning.ArtifactVersion;
 
 // It would be cool if there was a hook that i could use to setup a test environment.

Added: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java?rev=779283&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java (added)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java Wed May 27 19:45:32 2009
@@ -0,0 +1,79 @@
+package org.apache.maven;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
+import org.apache.maven.artifact.resolver.ResolutionErrorHandler;
+import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Exclusion;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.artifact.ProjectArtifact;
+import org.apache.maven.repository.RepositorySystem;
+import org.codehaus.plexus.component.annotations.Component;
+import org.codehaus.plexus.component.annotations.Requirement;
+
+@Component(role=ProjectDependenciesResolver.class)
+public class DefaultProjectDependenciesResolver
+    implements ProjectDependenciesResolver
+{
+    @Requirement
+    private RepositorySystem repositorySystem;
+    
+    @Requirement
+    private ResolutionErrorHandler resolutionErrorHandler;
+    
+    public Set<Artifact> resolve( MavenProject project, String scope, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
+        throws ArtifactResolutionException, ArtifactNotFoundException
+    {        
+        List<String> exclusions = new ArrayList<String>();
+        
+        for ( Dependency d : project.getDependencies() )
+        {
+            if ( d.getExclusions() != null )
+            {
+                for ( Exclusion e : d.getExclusions() )
+                {
+                    exclusions.add(  e.getGroupId() + ":" + e.getArtifactId() );
+                }
+            }
+        }
+        
+        ArtifactFilter scopeFilter = new ScopeArtifactFilter( scope );
+        
+        ArtifactFilter filter; 
+
+        if ( exclusions != null )
+        {
+            filter = new AndArtifactFilter( Arrays.asList( new ArtifactFilter[]{ new ExcludesArtifactFilter( exclusions ), scopeFilter } ) );
+        }
+        else
+        {
+            filter = scopeFilter;
+        }
+                
+        ArtifactResolutionRequest request = new ArtifactResolutionRequest()
+            .setArtifact( new ProjectArtifact( project ) )
+            .setResolveRoot( false )
+            .setResolveTransitively( true )
+            .setLocalRepository( localRepository )
+            .setRemoteRepostories( remoteRepositories )
+            .setManagedVersionMap( project.getManagedVersionMap() )
+            .setFilter( filter );
+    
+        ArtifactResolutionResult result = repositorySystem.resolve( request );                
+        resolutionErrorHandler.throwErrors( request, result );
+        return result.getArtifacts();        
+    }  
+}

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java?rev=779283&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java (added)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java Wed May 27 19:45:32 2009
@@ -0,0 +1,16 @@
+package org.apache.maven;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.project.MavenProject;
+
+public interface ProjectDependenciesResolver
+{
+    public Set<Artifact> resolve( MavenProject project, String scope, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
+        throws ArtifactResolutionException, ArtifactNotFoundException;
+}

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Wed May 27 19:45:32 2009
@@ -29,6 +29,7 @@
 import java.util.Set;
 import java.util.StringTokenizer;
 
+import org.apache.maven.ProjectDependenciesResolver;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.metadata.Metadata;
@@ -36,11 +37,6 @@
 import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
-import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
-import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
-import org.apache.maven.artifact.resolver.ResolutionErrorHandler;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.lifecycle.mapping.LifecycleMapping;
 import org.apache.maven.model.Plugin;
@@ -95,9 +91,6 @@
     @Requirement
     protected RepositorySystem repositorySystem;
 
-    @Requirement
-    private ResolutionErrorHandler resolutionErrorHandler;
-    
     /**
      * These mappings correspond to packaging types, like WAR packaging, which configure a particular mojos
      * to run in a given phase.
@@ -105,6 +98,9 @@
     @Requirement
     private Map<String, LifecycleMapping> lifecycleMappings;
     
+    @Requirement
+    private ProjectDependenciesResolver projectDependenciesResolver;
+    
     // @Configuration(source="org/apache/maven/lifecycle/lifecycles.xml")    
     private List<Lifecycle> lifecycles;
 
@@ -168,7 +164,8 @@
                 // mojoDescriptor.isDependencyResolutionRequired() is actually the scope of the dependency resolution required, not a boolean ... yah.
                 try
                 {
-                    downloadProjectDependencies( session, executionPlan.getRequiredResolutionScope() );
+                    Set<Artifact> projectDependencies = projectDependenciesResolver.resolve( currentProject, executionPlan.getRequiredResolutionScope(), session.getLocalRepository(), currentProject.getRemoteArtifactRepositories() );
+                    currentProject.setArtifacts( projectDependencies );    
                 }
                 catch ( ArtifactNotFoundException e )
                 {
@@ -881,31 +878,7 @@
 
         return dom;
     }
-               
-    private void downloadProjectDependencies( MavenSession session, String scope )
-        throws ArtifactResolutionException, ArtifactNotFoundException
-    {
-        MavenProject project = session.getCurrentProject();
-
-        Artifact artifact = repositorySystem.createProjectArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion() );
-        artifact.setFile( project.getFile() );
-        
-        ArtifactFilter filter = new ScopeArtifactFilter( scope );
-
-        ArtifactResolutionRequest request = new ArtifactResolutionRequest()
-            .setArtifact( artifact )
-            .setResolveRoot( false )
-            .setResolveTransitively( true )
-            .setLocalRepository( session.getLocalRepository() )
-            .setRemoteRepostories( project.getRemoteArtifactRepositories() )
-            .setManagedVersionMap( project.getManagedVersionMap() )
-            .setFilter( filter );
-
-        ArtifactResolutionResult result = repositorySystem.resolve( request );                
-        resolutionErrorHandler.throwErrors( request, result );
-        project.setArtifacts( result.getArtifacts() );      
-    }  
-    
+                   
     private Map<String,Plugin> pluginPrefixes = new HashMap<String,Plugin>();
     
     //TODO: take repo mans into account as one may be aggregating prefixes of many

Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java Wed May 27 19:45:32 2009
@@ -32,6 +32,7 @@
 import org.apache.maven.plugin.PluginDescriptorParsingException;
 import org.apache.maven.plugin.PluginNotFoundException;
 import org.apache.maven.plugin.PluginResolutionException;
+import org.apache.maven.project.MavenProject;
 
 /**
  * @author Jason van  Zyl

Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Wed May 27 19:45:32 2009
@@ -23,6 +23,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.maven.ProjectDependenciesResolver;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.artifact.InvalidRepositoryException;
@@ -50,6 +51,7 @@
 import org.apache.maven.model.profile.ProfileInjector;
 import org.apache.maven.model.profile.ProfileSelector;
 import org.apache.maven.profiles.ProfileManager;
+import org.apache.maven.project.artifact.ProjectArtifact;
 import org.apache.maven.project.validation.ModelValidationResult;
 import org.apache.maven.project.validation.ModelValidator;
 import org.apache.maven.repository.RepositorySystem;
@@ -113,6 +115,9 @@
     @Requirement
     private MavenProjectCache projectCache;
     
+    @Requirement 
+    private ProjectDependenciesResolver projectDependenciesResolver;
+    
     private MavenProject superProject;
 
     // ----------------------------------------------------------------------
@@ -326,9 +331,8 @@
     {
         MavenProject project = build( pomFile, configuration );
 
-        Artifact artifact = repositorySystem.createProjectArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion() );
-        artifact.setFile( pomFile );
-
+        Artifact artifact = new ProjectArtifact( project );                     
+        
         ArtifactResolutionRequest request = new ArtifactResolutionRequest()
             .setArtifact( artifact )
             .setResolveRoot( false )

Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Wed May 27 19:45:32 2009
@@ -58,7 +58,6 @@
     @Requirement
     private RepositoryMetadataManager repositoryMetadataManager;
 
-    //TODO: this will also cause a cycle so we need to refactor some code
     @Requirement
     private ArtifactFactory repositorySystem;
 
@@ -68,78 +67,93 @@
 
     @Requirement
     private PlexusContainer container;
-    
+
     @Requirement
     private Logger logger;
 
     public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
         throws ArtifactMetadataRetrievalException
     {
-        Artifact pomArtifact = repositorySystem.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
+        MavenProject project;
+
+        Artifact pomArtifact;
 
-        if ( "pom".equals( artifact.getType() ) )
+        //TODO: Not even sure this is really required as the project will be cached in the builder, we'll see this
+        // is currently the biggest hotspot
+        if ( artifact instanceof ProjectArtifact )
         {
-            pomArtifact.setFile( artifact.getFile() );
+            pomArtifact = artifact;
+
+            project = ((ProjectArtifact)artifact).getProject();
         }
+        else
+        {
+            pomArtifact = repositorySystem.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
 
-        Set<Artifact> artifacts = Collections.emptySet();
+            if ( "pom".equals( artifact.getType() ) )
+            {
+                pomArtifact.setFile( artifact.getFile() );
+            }
 
-        ProjectBuilderConfiguration configuration = new DefaultProjectBuilderConfiguration();
-        configuration.setLocalRepository( localRepository );
-        configuration.setRemoteRepositories( remoteRepositories );
-        configuration.setLenientValidation( true );
-        // We don't care about processing plugins here, all we're interested in is the dependencies.
-        configuration.setProcessPlugins( false );
-        // FIXME: We actually need the execution properties here...
-        configuration.setExecutionProperties( System.getProperties() );
+            ProjectBuilderConfiguration configuration = new DefaultProjectBuilderConfiguration();
+            configuration.setLocalRepository( localRepository );
+            configuration.setRemoteRepositories( remoteRepositories );
+            configuration.setLenientValidation( true );
+            // We don't care about processing plugins here, all we're interested in is the dependencies.
+            configuration.setProcessPlugins( false );
+            // FIXME: We actually need the execution properties here...
+            configuration.setExecutionProperties( System.getProperties() );
 
-        MavenProject project;
+            try
+            {
+                project = getProjectBuilder().buildFromRepository( pomArtifact, configuration );
+            }
+            catch ( ProjectBuildingException e )
+            {
+                // When this happens we have a Maven 1.x POM, or some invalid POM. There is still a pile of
+                // shit in the Maven 2.x repository that should have never found its way into the repository
+                // but it did.
+                logger.debug( "Failed to resolve artifact dependencies: " + e.getMessage() );
+                
+                return new ResolutionGroup( pomArtifact, Collections.<Artifact>emptySet(), remoteRepositories );                            
+            }            
+        }
 
-        try
+        Set<Artifact> artifacts = Collections.<Artifact>emptySet();       
+        
+        if ( !artifact.getArtifactHandler().isIncludesDependencies() )
         {
-            project = getProjectBuilder().buildFromRepository( pomArtifact, configuration );
+            artifacts = new LinkedHashSet<Artifact>();
 
-            if ( !artifact.getArtifactHandler().isIncludesDependencies() )
+            for ( Dependency d : project.getDependencies() )
             {
-                artifacts = new LinkedHashSet<Artifact>();
+                String effectiveScope = getEffectiveScope( d.getScope(), artifact.getScope() );
 
-                for ( Dependency d : project.getDependencies() )
+                if ( effectiveScope != null )
                 {
-                    String effectiveScope = getEffectiveScope( d.getScope(), artifact.getScope() );
+                    Artifact dependencyArtifact;
 
-                    if ( effectiveScope != null )
+                    //TODO: deal with this in a unified way, probably just looking at the dependency.                        
+                    if ( d.getClassifier() != null )
                     {
-                        Artifact dependencyArtifact;
-                        
-                        //TODO: deal with this in a unified way, probably just looking at the dependency.                        
-                        if ( d.getClassifier() != null )
-                        {
-                            dependencyArtifact = repositorySystem.createArtifactWithClassifier( d.getGroupId(), d.getArtifactId(), d.getVersion(), d.getType(), d.getClassifier() );                            
-                        }
-                        else
-                        {
-                            dependencyArtifact = repositorySystem.createArtifact( d.getGroupId(), d.getArtifactId(), d.getVersion(), effectiveScope, d.getType() );
-                        }
-
-                        dependencyArtifact.setOptional( d.isOptional() );
-
-                        if ( Artifact.SCOPE_SYSTEM.equals( effectiveScope ) )
-                        {
-                            dependencyArtifact.setFile( new File( d.getSystemPath() ) );
-                        }
-
-                        artifacts.add( dependencyArtifact );
+                        dependencyArtifact = repositorySystem.createArtifactWithClassifier( d.getGroupId(), d.getArtifactId(), d.getVersion(), d.getType(), d.getClassifier() );
+                    }
+                    else
+                    {
+                        dependencyArtifact = repositorySystem.createArtifact( d.getGroupId(), d.getArtifactId(), d.getVersion(), effectiveScope, d.getType() );
                     }
+
+                    dependencyArtifact.setOptional( d.isOptional() );
+
+                    if ( Artifact.SCOPE_SYSTEM.equals( effectiveScope ) )
+                    {
+                        dependencyArtifact.setFile( new File( d.getSystemPath() ) );
+                    }                    
+                    
+                    artifacts.add( dependencyArtifact );
                 }
             }
         }
-        catch ( ProjectBuildingException e )
-        {
-            // When this happens we have a Maven 1.x POM, or some invalid POM. There is still a pile of
-            // shit in the Maven 2.x repository that should have never found its way into the repository
-            // but it did.
-            logger.debug( "Failed to resolve artifact dependencies: " + e.getMessage() );
-        }
 
         return new ResolutionGroup( pomArtifact, artifacts, remoteRepositories );
     }
@@ -242,13 +256,13 @@
     }
 
     // USED BY MAVEN ASSEMBLY PLUGIN                                                                                                                                                                                                    
-    @Deprecated                                                                                                                                                                                                                         
-    public static Set<Artifact> createArtifacts( ArtifactFactory artifactFactory, List<Dependency> dependencies, String inheritedScope, ArtifactFilter dependencyFilter, MavenProject project )                                                                                                                                                                 
-        throws InvalidDependencyVersionException                                                                                                                                                                                        
-    {             
+    @Deprecated
+    public static Set<Artifact> createArtifacts( ArtifactFactory artifactFactory, List<Dependency> dependencies, String inheritedScope, ArtifactFilter dependencyFilter, MavenProject project )
+        throws InvalidDependencyVersionException
+    {
         return createArtifacts( artifactFactory, dependencies, dependencyFilter );
     }
-    
+
     private static Set<Artifact> createArtifacts( ArtifactFactory factory, List<Dependency> dependencies, ArtifactFilter filter )
     {
         Set<Artifact> artifacts = new LinkedHashSet<Artifact>();
@@ -262,17 +276,17 @@
                 artifacts.add( dependencyArtifact );
             }
         }
-        
+
         return artifacts;
-    }    
-    
+    }
+
     public MavenProjectBuilder getProjectBuilder()
     {
         if ( projectBuilder != null )
         {
             return projectBuilder;
         }
-        
+
         try
         {
             projectBuilder = container.lookup( MavenProjectBuilder.class );
@@ -281,7 +295,7 @@
         {
             // Won't happen
         }
-        
+
         return projectBuilder;
-    }    
+    }
 }

Added: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java?rev=779283&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java (added)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java Wed May 27 19:45:32 2009
@@ -0,0 +1,63 @@
+package org.apache.maven.project.artifact;
+
+import org.apache.maven.artifact.DefaultArtifact;
+import org.apache.maven.artifact.handler.ArtifactHandler;
+import org.apache.maven.project.MavenProject;
+
+public class ProjectArtifact
+    extends DefaultArtifact
+{
+    private MavenProject project;
+
+    public ProjectArtifact( MavenProject project )
+    {
+        super( project.getGroupId(), project.getArtifactId(), project.getVersion(), null, "pom", null, new PomArtifactHandler() );
+        this.project = project;
+        setFile( project.getFile() );
+        setResolved( true );
+    }
+
+    public MavenProject getProject()
+    {
+        return project;
+    }
+    
+    static class PomArtifactHandler
+        implements ArtifactHandler
+    {
+        public String getClassifier()
+        {
+            return "pom";
+        }
+
+        public String getDirectory()
+        {
+            return null;
+        }
+
+        public String getExtension()
+        {
+            return "pom";
+        }
+
+        public String getLanguage()
+        {
+            return "none";
+        }
+
+        public String getPackaging()
+        {
+            return "pom";
+        }
+
+        public boolean isAddedToClasspath()
+        {
+            return false;
+        }
+
+        public boolean isIncludesDependencies()
+        {
+            return false;
+        }
+    }
+}

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/components/branches/MNG-2766/maven-core/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/resources/META-INF/plexus/components.xml Wed May 27 19:45:32 2009
@@ -36,7 +36,7 @@
           <role>org.apache.maven.plugin.PluginManager</role>
         </requirement>
         <requirement>
-          <role>org.apache.maven.artifact.resolver.ResolutionErrorHandler</role>
+          <role>org.apache.maven.ProjectDependenciesResolver</role>
         </requirement>
         <requirement>
           <role>org.apache.maven.repository.RepositorySystem</role>

Modified: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java Wed May 27 19:45:32 2009
@@ -2,8 +2,10 @@
 
 import java.io.File;
 import java.util.Arrays;
+import java.util.List;
 import java.util.Properties;
 
+import org.apache.maven.artifact.InvalidRepositoryException;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.execution.DefaultMavenExecutionRequest;
 import org.apache.maven.execution.DefaultMavenExecutionResult;
@@ -29,68 +31,66 @@
 
     @Requirement
     protected MavenProjectBuilder projectBuilder;
-    
+
     protected void setUp()
         throws Exception
     {
         repositorySystem = lookup( RepositorySystem.class );
-        projectBuilder = lookup( MavenProjectBuilder.class );                
+        projectBuilder = lookup( MavenProjectBuilder.class );
     }
 
     @Override
-    protected void tearDown() throws Exception {
-            repositorySystem = null;
-            projectBuilder = null;
-            super.tearDown();
+    protected void tearDown()
+        throws Exception
+    {
+        repositorySystem = null;
+        projectBuilder = null;
+        super.tearDown();
     }
 
     abstract protected String getProjectsDirectory();
-        
+
     protected File getProject( String name )
         throws Exception
     {
         File source = new File( new File( getBasedir(), getProjectsDirectory() ), name );
-        File target = new File( new File ( getBasedir(), "target" ), name );
+        File target = new File( new File( getBasedir(), "target" ), name );
         if ( !target.exists() )
         {
             FileUtils.copyDirectoryStructure( source, target );
         }
         return new File( target, "pom.xml" );
-    }   
-    
+    }
+
     /**
      * We need to customize the standard Plexus container with the plugin discovery listener which
-     * is what looks for the META-INF/maven/plugin.xml resources that enter the system when a
-     * Maven plugin is loaded.
+     * is what looks for the META-INF/maven/plugin.xml resources that enter the system when a Maven
+     * plugin is loaded.
      * 
      * We also need to customize the Plexus container with a standard plugin discovery listener
      * which is the MavenPluginCollector. When a Maven plugin is discovered the MavenPluginCollector
-     * collects the plugin descriptors which are found. 
+     * collects the plugin descriptors which are found.
      */
     protected void customizeContainerConfiguration( ContainerConfiguration containerConfiguration )
     {
         containerConfiguration.addComponentDiscoverer( PluginManager.class );
         containerConfiguration.addComponentDiscoveryListener( PluginManager.class );
     }
-    
+
     protected MavenExecutionRequest createMavenExecutionRequest( File pom )
         throws Exception
     {
-        ArtifactRepository localRepository = repositorySystem.createDefaultLocalRepository();
-        ArtifactRepository remoteRepository = repositorySystem.createDefaultRemoteRepository();
-        
         MavenExecutionRequest request = new DefaultMavenExecutionRequest()
-            .setPom( pom )
-            .setProjectPresent( true )
+            .setPom( pom ).setProjectPresent( true )
             .setPluginGroups( Arrays.asList( new String[] { "org.apache.maven.plugins" } ) )
-            .setLocalRepository( localRepository )
-            .setRemoteRepositories( Arrays.asList( remoteRepository ) )
-            .setGoals( Arrays.asList( new String[] { "package" } ) )   
-            .setProperties( new Properties() );        
-        
+            .setLocalRepository( getLocalRepository() )
+            .setRemoteRepositories( getRemoteRepositories() )
+            .setGoals( Arrays.asList( new String[] { "package" } ) )
+            .setProperties( new Properties() );
+
         return request;
     }
-    
+
     // layer the creation of a project builder configuration with a request, but this will need to be
     // a Maven subclass because we don't want to couple maven to the project builder which we need to
     // separate.
@@ -99,12 +99,10 @@
     {
         MavenExecutionRequest request = createMavenExecutionRequest( pom );
 
-        ProjectBuilderConfiguration configuration = new DefaultProjectBuilderConfiguration()
-            .setLocalRepository( request.getLocalRepository() )
-            .setRemoteRepositories( request.getRemoteRepositories() );
+        ProjectBuilderConfiguration configuration = new DefaultProjectBuilderConfiguration().setLocalRepository( request.getLocalRepository() ).setRemoteRepositories( request.getRemoteRepositories() );
 
         MavenProject project = null;
-        
+
         if ( pom != null )
         {
             project = projectBuilder.build( pom, configuration );
@@ -113,18 +111,30 @@
         {
             project = createStubMavenProject();
         }
-                        
+
         MavenSession session = new MavenSession( getContainer(), request, new DefaultMavenExecutionResult(), project );
-        
+
         return session;
-    }      
-    
+    }
+
     protected MavenProject createStubMavenProject()
     {
         Model model = new Model();
         model.setGroupId( "org.apache.maven.test" );
         model.setArtifactId( "maven-test" );
         model.setVersion( "1.0" );
-        return new MavenProject( model );        
+        return new MavenProject( model );
+    }
+    
+    protected List<ArtifactRepository> getRemoteRepositories() 
+        throws InvalidRepositoryException
+    {
+        return Arrays.asList( repositorySystem.createDefaultRemoteRepository() );
+    }
+        
+    protected ArtifactRepository getLocalRepository() 
+        throws InvalidRepositoryException
+    {        
+        return repositorySystem.createDefaultLocalRepository();        
     }
 }

Added: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java?rev=779283&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java (added)
+++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java Wed May 27 19:45:32 2009
@@ -0,0 +1,87 @@
+package org.apache.maven;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Exclusion;
+import org.apache.maven.model.Model;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.component.annotations.Requirement;
+
+public class ProjectDependenciesResolverTest
+    extends AbstractCoreMavenComponentTestCase
+{
+    @Requirement
+    private ProjectDependenciesResolver resolver;
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+        resolver = lookup( ProjectDependenciesResolver.class );
+    }
+
+    @Override
+    protected void tearDown()
+        throws Exception
+    {
+        resolver = null;
+        super.tearDown();
+    }
+
+    protected String getProjectsDirectory()
+    {
+        return "src/test/projects/project-dependencies-resolver";
+    }
+
+    public void testCalculationOfBuildPlanWithIndividualTaskOfTheCleanCleanGoal()
+        throws Exception
+    {
+        MavenProject project = createProject();
+        
+        Set<Artifact> artifactDependencies = resolver.resolve( project, Artifact.SCOPE_COMPILE, getLocalRepository(), getRemoteRepositories() );
+        assertEquals( 0, artifactDependencies.size() );
+        
+        artifactDependencies = resolver.resolve( project, Artifact.SCOPE_RUNTIME, getLocalRepository(), getRemoteRepositories() );
+        assertEquals( 1, artifactDependencies.size() );
+        assertEquals( "maven-core-it-support" , artifactDependencies.iterator().next().getArtifactId() );
+    }
+    
+    private MavenProject createProject()
+    {
+        Model model = new Model();
+        model.setModelVersion( "4.0.0" );
+        model.setGroupId( "org.apache.maven" );
+        model.setArtifactId( "project-test" );
+        model.setVersion( "1.0" );  
+        
+        List<Dependency> dependencies = new ArrayList<Dependency>();
+        dependencies.add( d( "org.apache.maven.its", "maven-core-it-support", "1.3" ) );
+        model.setDependencies( dependencies );        
+        
+        return new MavenProject( model );
+    }
+    
+    private Dependency d( String g, String a, String v )
+    {
+        Dependency d = new Dependency();
+        d.setGroupId( g );
+        d.setArtifactId( a );
+        d.setVersion( v );
+        d.setScope( Artifact.SCOPE_RUNTIME );
+        
+        Exclusion e = new Exclusion();
+        e.setGroupId( "commons-lang" );
+        e.setArtifactId( "commons-lang" );        
+        d.addExclusion( e );
+        
+        return d;
+    }    
+}

Propchange: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/TestMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/TestMetadataSource.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/TestMetadataSource.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/TestMetadataSource.java Wed May 27 19:45:32 2009
@@ -10,6 +10,7 @@
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.metadata.ResolutionGroup;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.artifact.resolver.metadata.MetadataSource;
 import org.apache.maven.project.artifact.MavenMetadataSource;
 import org.codehaus.plexus.component.annotations.Component;
@@ -32,5 +33,4 @@
         
         return rg;
     }
-
 }
\ No newline at end of file

Added: maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/project-with-exclusions/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/project-with-exclusions/pom.xml?rev=779283&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/project-with-exclusions/pom.xml (added)
+++ maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/project-with-exclusions/pom.xml Wed May 27 19:45:32 2009
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng4034</groupId>
+  <artifactId>parent</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.its</groupId>
+      <artifactId>maven-core-it-support</artifactId>
+      <version>1.3</version>
+      <scope>runtime</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>commons-lang</groupId>
+          <artifactId>commons-lang</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+  </dependencies>
+</project>

Propchange: maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/project-with-exclusions/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/project-with-exclusions/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"