You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2005/06/22 08:46:27 UTC

svn commit: r191773 - in /maven/components/trunk: maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/ maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/ maven-artifact/src/main/java/org/apache/maven/artifact/factory/ m...

Author: brett
Date: Tue Jun 21 23:46:26 2005
New Revision: 191773

URL: http://svn.apache.org/viewcvs?rev=191773&view=rev
Log:
simplify the resolveTransitively API, and implement the new collector up to the level of functionality of the original.


Added:
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/LegacyArtifactCollector.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ArtifactVersion.java
Modified:
    maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
    maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/factory/DefaultArtifactFactory.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactCollector.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
    maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java

Modified: maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java?rev=191773&r1=191772&r2=191773&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java (original)
+++ maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java Tue Jun 21 23:46:26 2005
@@ -88,7 +88,7 @@
             pom = createDummyPom();
         }
 
-        Set artifacts = metadataSource.createArtifacts( dependencies, null, null );
+        Set artifacts = MavenMetadataSource.createArtifacts( artifactFactory, dependencies, null, null );
 
         log( "Resolving dependencies..." );
 

Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java?rev=191773&r1=191772&r2=191773&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java Tue Jun 21 23:46:26 2005
@@ -31,7 +31,6 @@
 import org.codehaus.plexus.logging.Logger;
 
 import java.io.File;
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
@@ -128,23 +127,6 @@
                 throw new ArtifactResolutionException( e.getMessage(), artifact, remoteRepositories, e );
             }
         }
-    }
-
-    public ArtifactResolutionResult resolveTransitively( Artifact artifact, List remoteRepositories,
-                                                         ArtifactRepository localRepository,
-                                                         ArtifactMetadataSource source )
-        throws ArtifactResolutionException
-    {
-        return resolveTransitively( artifact, remoteRepositories, localRepository, source, null );
-    }
-
-    public ArtifactResolutionResult resolveTransitively( Artifact artifact, List remoteRepositories,
-                                                         ArtifactRepository localRepository,
-                                                         ArtifactMetadataSource source, ArtifactFilter filter )
-        throws ArtifactResolutionException
-    {
-        return resolveTransitively( Collections.singleton( artifact ), null, remoteRepositories, localRepository,
-                                    source, filter );
     }
 
     public ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact,

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/factory/DefaultArtifactFactory.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/factory/DefaultArtifactFactory.java?rev=191773&r1=191772&r2=191773&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/factory/DefaultArtifactFactory.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/factory/DefaultArtifactFactory.java Tue Jun 21 23:46:26 2005
@@ -56,7 +56,7 @@
     private Artifact createArtifact( String groupId, String artifactId, String version, String scope, String type,
                                      String classifier, String inheritedScope )
     {
-        // TODO: can refactor, use scope handler
+        // TODO: can refactor - inherited scope calculation belongs in the collector, use scope handler
 
         String desiredScope = Artifact.SCOPE_RUNTIME;
         if ( inheritedScope == null )

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactCollector.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactCollector.java?rev=191773&r1=191772&r2=191773&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactCollector.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactCollector.java Tue Jun 21 23:46:26 2005
@@ -38,4 +38,10 @@
                                       List remoteRepositories, ArtifactMetadataSource source, ArtifactFilter filter,
                                       ArtifactFactory artifactFactory )
         throws ArtifactResolutionException;
+
+    ArtifactResolutionResult collect( Set artifacts, Artifact originatingArtifact, Set managedVersions,
+                                      ArtifactRepository localRepository, List remoteRepositories,
+                                      ArtifactMetadataSource source, ArtifactFilter filter,
+                                      ArtifactFactory artifactFactory )
+        throws ArtifactResolutionException;
 }

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java?rev=191773&r1=191772&r2=191773&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java Tue Jun 21 23:46:26 2005
@@ -39,15 +39,6 @@
     void resolve( Artifact artifact, List remoteRepositories, ArtifactRepository localRepository )
         throws ArtifactResolutionException;
 
-    ArtifactResolutionResult resolveTransitively( Artifact artifact, List remoteRepositories,
-                                                  ArtifactRepository localRepository, ArtifactMetadataSource source )
-        throws ArtifactResolutionException;
-
-    ArtifactResolutionResult resolveTransitively( Artifact artifact, List remoteRepositories,
-                                                  ArtifactRepository localRepository, ArtifactMetadataSource source,
-                                                  ArtifactFilter filter )
-        throws ArtifactResolutionException;
-
     ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact, List remoteRepositories,
                                                   ArtifactRepository localRepository, ArtifactMetadataSource source )
         throws ArtifactResolutionException;

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java?rev=191773&r1=191772&r2=191773&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java Tue Jun 21 23:46:26 2005
@@ -23,13 +23,14 @@
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.HashSet;
 
 /**
  * Default implementation of the artifact collector.
@@ -46,112 +47,209 @@
                                              ArtifactFactory artifactFactory )
         throws ArtifactResolutionException
     {
-        ArtifactResolutionResult result = new ArtifactResolutionResult();
+        return collect( artifacts, originatingArtifact, Collections.EMPTY_SET, localRepository, remoteRepositories,
+                        source, filter, artifactFactory );
+    }
 
+    public ArtifactResolutionResult collect( Set artifacts, Artifact originatingArtifact, Set managedVersions,
+                                             ArtifactRepository localRepository, List remoteRepositories,
+                                             ArtifactMetadataSource source, ArtifactFilter filter,
+                                             ArtifactFactory artifactFactory )
+        throws ArtifactResolutionException
+    {
         Map resolvedArtifacts = new HashMap();
 
-        List queue = new LinkedList();
+        ResolutionNode root = new ResolutionNode( originatingArtifact );
+        root.addDependencies( artifacts, filter );
+
+        recurse( root, resolvedArtifacts, localRepository, remoteRepositories, source, filter, artifactFactory );
 
-        queue.add( artifacts );
+        Set set = new HashSet();
 
-        while ( !queue.isEmpty() )
+        for ( Iterator i = resolvedArtifacts.values().iterator(); i.hasNext(); )
         {
-            Set currentArtifacts = (Set) queue.remove( 0 );
+            ResolutionNode node = (ResolutionNode) i.next();
+            if ( node != root )
+            {
+                set.add( node.getArtifact() );
+            }
+        }
+
+        ArtifactResolutionResult result = new ArtifactResolutionResult();
 
-            for ( Iterator i = currentArtifacts.iterator(); i.hasNext(); )
+        result.setArtifacts( set );
+
+        return result;
+    }
+
+    private void recurse( ResolutionNode node, Map resolvedArtifacts, ArtifactRepository localRepository,
+                          List remoteRepositories, ArtifactMetadataSource source, ArtifactFilter filter,
+                          ArtifactFactory artifactFactory )
+        throws ArtifactResolutionException
+    {
+        ResolutionNode previous = (ResolutionNode) resolvedArtifacts.get( node.getKey() );
+        if ( previous != null )
+        {
+            // TODO: conflict resolvers
+
+            // previous one is more dominant
+            if ( previous.getDepth() <= node.getDepth() )
             {
-                Artifact newArtifact = (Artifact) i.next();
+                boolean updateScope = false;
+                Artifact newArtifact = node.getArtifact();
+                Artifact previousArtifact = previous.getArtifact();
+
+                if ( Artifact.SCOPE_RUNTIME.equals( newArtifact.getScope() ) &&
+                    ( Artifact.SCOPE_TEST.equals( previousArtifact.getScope() ) ||
+                        Artifact.SCOPE_PROVIDED.equals( previousArtifact.getScope() ) ) )
+                {
+                    updateScope = true;
+                }
 
-                String id = newArtifact.getDependencyConflictId();
+                if ( Artifact.SCOPE_COMPILE.equals( newArtifact.getScope() ) &&
+                    !Artifact.SCOPE_COMPILE.equals( previousArtifact.getScope() ) )
+                {
+                    updateScope = true;
+                }
 
-                if ( resolvedArtifacts.containsKey( id ) )
+                if ( updateScope )
                 {
-                    Artifact knownArtifact = (Artifact) resolvedArtifacts.get( id );
+                    Artifact artifact = artifactFactory.createArtifact( previousArtifact.getGroupId(),
+                                                                        previousArtifact.getArtifactId(),
+                                                                        previousArtifact.getVersion(),
+                                                                        newArtifact.getScope(),
+                                                                        previousArtifact.getType() );
+                    // TODO: can I just change the scope?
+                    previous.setArtifact( artifact );
+                }
 
-                    String newVersion = newArtifact.getVersion();
-
-                    String knownVersion = knownArtifact.getVersion();
-
-                    if ( !newVersion.equals( knownVersion ) )
-                    {
-                        addConflict( result, knownArtifact, newArtifact );
-                    }
-
-                    // TODO: scope handler
-                    boolean updateScope = false;
-                    if ( Artifact.SCOPE_RUNTIME.equals( newArtifact.getScope() ) &&
-                        Artifact.SCOPE_TEST.equals( knownArtifact.getScope() ) )
-                    {
-                        updateScope = true;
-                    }
-
-                    if ( Artifact.SCOPE_COMPILE.equals( newArtifact.getScope() ) &&
-                        !Artifact.SCOPE_COMPILE.equals( knownArtifact.getScope() ) )
-                    {
-                        updateScope = true;
-                    }
-
-                    if ( updateScope )
-                    {
-                        Artifact artifact = artifactFactory.createArtifact( knownArtifact.getGroupId(),
-                                                                            knownArtifact.getArtifactId(), knownVersion,
-                                                                            newArtifact.getScope(),
-                                                                            knownArtifact.getType() );
-                        resolvedArtifacts.put( artifact.getDependencyConflictId(), artifact );
-                    }
-                }
-                else
-                {
-                    // ----------------------------------------------------------------------
-                    // It's the first time we have encountered this artifact
-                    // ----------------------------------------------------------------------
-
-                    if ( filter != null && !filter.include( newArtifact ) )
-                    {
-                        continue;
-                    }
-
-                    resolvedArtifacts.put( id, newArtifact );
-
-                    Set referencedDependencies = null;
-
-                    try
-                    {
-                        referencedDependencies = source.retrieve( newArtifact, localRepository, remoteRepositories );
-                    }
-                    catch ( ArtifactMetadataRetrievalException e )
-                    {
-                        throw new TransitiveArtifactResolutionException( e.getMessage(), newArtifact,
-                                                                         remoteRepositories, e );
-                    }
-
-                    // the pom for given dependency exisit we will add it to the
-                    // queue
-                    queue.add( referencedDependencies );
+                return;
+            }
+            else
+            {
+                boolean updateScope = false;
+                Artifact previousArtifact = previous.getArtifact();
+                Artifact newArtifact = node.getArtifact();
+
+                if ( Artifact.SCOPE_RUNTIME.equals( previousArtifact.getScope() ) &&
+                    ( Artifact.SCOPE_TEST.equals( newArtifact.getScope() ) ||
+                        Artifact.SCOPE_PROVIDED.equals( newArtifact.getScope() ) ) )
+                {
+                    updateScope = true;
                 }
+
+                if ( Artifact.SCOPE_COMPILE.equals( previousArtifact.getScope() ) &&
+                    !Artifact.SCOPE_COMPILE.equals( newArtifact.getScope() ) )
+                {
+                    updateScope = true;
+                }
+
+                if ( updateScope )
+                {
+                    Artifact artifact = artifactFactory.createArtifact( newArtifact.getGroupId(),
+                                                                        newArtifact.getArtifactId(),
+                                                                        newArtifact.getVersion(),
+                                                                        previousArtifact.getScope(),
+                                                                        newArtifact.getType() );
+                    // TODO: can I just change the scope?
+                    node.setArtifact( artifact );
+                }
+
             }
         }
 
-        result.setArtifacts( new HashSet( resolvedArtifacts.values() ) );
+        resolvedArtifacts.put( node.getKey(), node );
 
-        return result;
+        for ( Iterator i = node.getChildrenIterator(); i.hasNext(); )
+        {
+            ResolutionNode child = (ResolutionNode) i.next();
+            if ( !child.isResolved() )
+            {
+                try
+                {
+                    Set artifacts = source.retrieve( child.getArtifact(), localRepository, remoteRepositories );
+                    child.addDependencies( artifacts, filter );
+                }
+                catch ( ArtifactMetadataRetrievalException e )
+                {
+                    throw new TransitiveArtifactResolutionException( e.getMessage(), child.getArtifact(),
+                                                                     remoteRepositories, e );
+                }
+
+                recurse( child, resolvedArtifacts, localRepository, remoteRepositories, source, filter,
+                         artifactFactory );
+            }
+        }
     }
 
-    private void addConflict( ArtifactResolutionResult result, Artifact knownArtifact, Artifact newArtifact )
+
+    private static class ResolutionNode
     {
-        List conflicts;
+        private Artifact artifact;
 
-        conflicts = (List) result.getConflicts().get( newArtifact.getDependencyConflictId() );
+        private final ResolutionNode parent;
 
-        if ( conflicts == null )
+        private List children = null;
+
+        private final int depth;
+
+        public ResolutionNode( Artifact artifact )
+        {
+            this.artifact = artifact;
+            this.parent = null;
+            this.depth = 0;
+        }
+
+        public ResolutionNode( Artifact artifact, ResolutionNode parent )
         {
-            conflicts = new LinkedList();
+            this.artifact = artifact;
+            this.parent = parent;
+            this.depth = parent.depth + 1;
+        }
 
-            conflicts.add( knownArtifact );
+        public Artifact getArtifact()
+        {
+            return artifact;
+        }
 
-            result.getConflicts().put( newArtifact.getDependencyConflictId(), conflicts );
+        public Object getKey()
+        {
+            return artifact.getDependencyConflictId();
         }
 
-        conflicts.add( newArtifact );
+        public void addDependencies( Set artifacts, ArtifactFilter filter )
+        {
+            children = new ArrayList( artifacts.size() );
+
+            for ( Iterator i = artifacts.iterator(); i.hasNext(); )
+            {
+                Artifact a = (Artifact) i.next();
+
+                if ( filter == null || filter.include( a ) )
+                {
+                    children.add( new ResolutionNode( a, this ) );
+                }
+            }
+        }
+
+        public boolean isResolved()
+        {
+            return children != null;
+        }
+
+        public Iterator getChildrenIterator()
+        {
+            return children.iterator();
+        }
+
+        public int getDepth()
+        {
+            return depth;
+        }
+
+        public void setArtifact( Artifact artifact )
+        {
+            this.artifact = artifact;
+        }
     }
 }

Added: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/LegacyArtifactCollector.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/LegacyArtifactCollector.java?rev=191773&view=auto
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/LegacyArtifactCollector.java (added)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/LegacyArtifactCollector.java Tue Jun 21 23:46:26 2005
@@ -0,0 +1,169 @@
+package org.apache.maven.artifact.resolver;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Previous implementation of the artifact collector.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @version $Id: DefaultArtifactCollector.java 191748 2005-06-22 00:31:33Z brett $
+ * @deprecated
+ */
+public class LegacyArtifactCollector
+    implements ArtifactCollector
+{
+    public ArtifactResolutionResult collect( Set artifacts, Artifact originatingArtifact,
+                                             ArtifactRepository localRepository, List remoteRepositories,
+                                             ArtifactMetadataSource source, ArtifactFilter filter,
+                                             ArtifactFactory artifactFactory )
+        throws ArtifactResolutionException
+    {
+        return collect( artifacts, originatingArtifact, Collections.EMPTY_SET, localRepository, remoteRepositories,
+                        source, filter, artifactFactory );
+    }
+
+    public ArtifactResolutionResult collect( Set artifacts, Artifact originatingArtifact, Set managedVersions,
+                                             ArtifactRepository localRepository, List remoteRepositories,
+                                             ArtifactMetadataSource source, ArtifactFilter filter,
+                                             ArtifactFactory artifactFactory )
+        throws ArtifactResolutionException
+    {
+        ArtifactResolutionResult result = new ArtifactResolutionResult();
+
+        Map resolvedArtifacts = new HashMap();
+
+        List queue = new LinkedList();
+
+        queue.add( artifacts );
+
+        while ( !queue.isEmpty() )
+        {
+            Set currentArtifacts = (Set) queue.remove( 0 );
+
+            for ( Iterator i = currentArtifacts.iterator(); i.hasNext(); )
+            {
+                Artifact newArtifact = (Artifact) i.next();
+
+                String id = newArtifact.getDependencyConflictId();
+
+                if ( resolvedArtifacts.containsKey( id ) )
+                {
+                    Artifact knownArtifact = (Artifact) resolvedArtifacts.get( id );
+
+                    String newVersion = newArtifact.getVersion();
+
+                    String knownVersion = knownArtifact.getVersion();
+
+                    if ( !newVersion.equals( knownVersion ) )
+                    {
+                        addConflict( result, knownArtifact, newArtifact );
+                    }
+
+                    // TODO: scope handler
+                    boolean updateScope = false;
+                    if ( Artifact.SCOPE_RUNTIME.equals( newArtifact.getScope() ) &&
+                        Artifact.SCOPE_TEST.equals( knownArtifact.getScope() ) )
+                    {
+                        updateScope = true;
+                    }
+
+                    if ( Artifact.SCOPE_COMPILE.equals( newArtifact.getScope() ) &&
+                        !Artifact.SCOPE_COMPILE.equals( knownArtifact.getScope() ) )
+                    {
+                        updateScope = true;
+                    }
+
+                    if ( updateScope )
+                    {
+                        Artifact artifact = artifactFactory.createArtifact( knownArtifact.getGroupId(),
+                                                                            knownArtifact.getArtifactId(), knownVersion,
+                                                                            newArtifact.getScope(),
+                                                                            knownArtifact.getType() );
+                        resolvedArtifacts.put( artifact.getDependencyConflictId(), artifact );
+                    }
+                }
+                else
+                {
+                    // ----------------------------------------------------------------------
+                    // It's the first time we have encountered this artifact
+                    // ----------------------------------------------------------------------
+
+                    if ( filter != null && !filter.include( newArtifact ) )
+                    {
+                        continue;
+                    }
+
+                    resolvedArtifacts.put( id, newArtifact );
+
+                    Set referencedDependencies = null;
+
+                    try
+                    {
+                        referencedDependencies = source.retrieve( newArtifact, localRepository, remoteRepositories );
+                    }
+                    catch ( ArtifactMetadataRetrievalException e )
+                    {
+                        throw new TransitiveArtifactResolutionException( e.getMessage(), newArtifact,
+                                                                         remoteRepositories, e );
+                    }
+
+                    // the pom for given dependency exisit we will add it to the
+                    // queue
+                    queue.add( referencedDependencies );
+                }
+            }
+        }
+
+        result.setArtifacts( new HashSet( resolvedArtifacts.values() ) );
+
+        return result;
+    }
+
+    private void addConflict( ArtifactResolutionResult result, Artifact knownArtifact, Artifact newArtifact )
+    {
+        List conflicts;
+
+        conflicts = (List) result.getConflicts().get( newArtifact.getDependencyConflictId() );
+
+        if ( conflicts == null )
+        {
+            conflicts = new LinkedList();
+
+            conflicts.add( knownArtifact );
+
+            result.getConflicts().put( newArtifact.getDependencyConflictId(), conflicts );
+        }
+
+        conflicts.add( newArtifact );
+    }
+}

Added: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ArtifactVersion.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ArtifactVersion.java?rev=191773&view=auto
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ArtifactVersion.java (added)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ArtifactVersion.java Tue Jun 21 23:46:26 2005
@@ -0,0 +1,29 @@
+package org.apache.maven.artifact.versioning;
+
+/*
+* Copyright 2001-2005 The Apache Software Foundation.
+*
+* Licensed 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.
+*/
+
+/**
+ * Describes an artifact version in terms of its components, converts it to/from a string and
+ * compares two versions.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @version $Id$
+ */
+public interface ArtifactVersion
+    extends Comparable
+{
+}

Modified: maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java?rev=191773&r1=191772&r2=191773&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java (original)
+++ maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java Tue Jun 21 23:46:26 2005
@@ -21,12 +21,15 @@
 import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ExclusionSetFilter;
 import org.codehaus.plexus.PlexusTestCase;
 
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -48,6 +51,8 @@
 
     private Source source;
 
+    private static final String GROUP_ID = "test";
+
     protected void setUp()
         throws Exception
     {
@@ -57,10 +62,10 @@
         this.artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
         this.artifactCollector = new DefaultArtifactCollector();
 
-        this.projectArtifact = createArtifact( "project", "1.0" );
+        this.projectArtifact = createArtifact( "project", "1.0", null );
     }
 
-    public void testCircularDependencyNotIncludingCurrentProject()
+    public void disabledtestCircularDependencyNotIncludingCurrentProject()
         throws ArtifactResolutionException
     {
         ArtifactSpec a = createArtifact( "a", "1.0" );
@@ -69,7 +74,7 @@
         try
         {
             collect( a );
-//            fail( "Should have failed on cyclic dependency not involving project" );
+            fail( "Should have failed on cyclic dependency not involving project" );
         }
         catch ( CyclicDependencyException expected )
         {
@@ -77,7 +82,7 @@
         }
     }
 
-    public void testCircularDependencyIncludingCurrentProject()
+    public void disabledtestCircularDependencyIncludingCurrentProject()
         throws ArtifactResolutionException
     {
         ArtifactSpec a = createArtifact( "a", "1.0" );
@@ -86,7 +91,7 @@
         try
         {
             collect( a );
-//            fail( "Should have failed on cyclic dependency involving project" );
+            fail( "Should have failed on cyclic dependency involving project" );
         }
         catch ( CyclicDependencyException expected )
         {
@@ -94,6 +99,25 @@
         }
     }
 
+    public void testResolveWithFilter()
+        throws ArtifactResolutionException
+    {
+        ArtifactSpec a = createArtifact( "a", "1.0" );
+        ArtifactSpec b = a.addDependency( "b", "1.0" );
+        ArtifactSpec c = a.addDependency( "c", "3.0" );
+
+        b.addDependency( "c", "2.0" );
+        ArtifactSpec d = b.addDependency( "d", "4.0" );
+
+        ArtifactResolutionResult res = collect( a );
+        assertEquals( "Check artifact list", createSet( new Object[]{a.artifact, b.artifact, c.artifact, d.artifact} ),
+                      res.getArtifacts() );
+
+        ArtifactFilter filter = new ExclusionSetFilter( new String[]{"b"} );
+        res = collect( a, filter );
+        assertEquals( "Check artifact list", createSet( new Object[]{a.artifact, c.artifact} ), res.getArtifacts() );
+    }
+
     public void testResolveNearest()
         throws ArtifactResolutionException
     {
@@ -104,60 +128,143 @@
         b.addDependency( "c", "2.0" );
 
         ArtifactResolutionResult res = collect( a );
-        assertEquals( "Check artifact list",
-                      new HashSet( Arrays.asList( new Object[]{a.artifact, b.artifact, c.artifact} ) ),
+        assertEquals( "Check artifact list", createSet( new Object[]{a.artifact, b.artifact, c.artifact} ),
                       res.getArtifacts() );
     }
 
+    public void disabledtestResolveManagedVersion()
+        throws ArtifactResolutionException
+    {
+        ArtifactSpec a = createArtifact( "a", "1.0" );
+        a.addDependency( "b", "3.0", Artifact.SCOPE_RUNTIME );
+
+        Artifact managedVersion = createArtifact( "b", "5.0" ).artifact;
+        Artifact modifiedB = createArtifact( "b", "5.0", Artifact.SCOPE_RUNTIME ).artifact;
+
+        ArtifactResolutionResult res = collect( a, managedVersion );
+        assertEquals( "Check artifact list", createSet( new Object[]{a.artifact, modifiedB} ), res.getArtifacts() );
+    }
+
     public void testResolveCompileScopeOverTestScope()
         throws ArtifactResolutionException
     {
         ArtifactSpec a = createArtifact( "a", "1.0" );
-        ArtifactSpec b = a.addDependency( "b", "1.0" );
-        a.addDependency( "c", "3.0", Artifact.SCOPE_TEST );
+        ArtifactSpec c = createArtifact( "c", "3.0", Artifact.SCOPE_TEST );
 
-        b.addDependency( "c", "2.0", Artifact.SCOPE_COMPILE );
+        a.addDependency( "c", "2.0", Artifact.SCOPE_COMPILE );
 
         Artifact modifiedC = createArtifact( "c", "3.0", Artifact.SCOPE_COMPILE ).artifact;
 
-        ArtifactResolutionResult res = collect( a );
-        assertEquals( "Check artifact list",
-                      new HashSet( Arrays.asList( new Object[]{a.artifact, b.artifact, modifiedC} ) ),
-                      res.getArtifacts() );
+        ArtifactResolutionResult res = collect( createSet( new Object[]{a.artifact, c.artifact} ) );
+        assertEquals( "Check artifact list", createSet( new Object[]{a.artifact, modifiedC} ), res.getArtifacts() );
+        Artifact artifact = getArtifact( "c", res.getArtifacts() );
+        assertEquals( "Check scope", Artifact.SCOPE_COMPILE, artifact.getScope() );
     }
 
     public void testResolveRuntimeScopeOverTestScope()
         throws ArtifactResolutionException
     {
         ArtifactSpec a = createArtifact( "a", "1.0" );
-        ArtifactSpec b = a.addDependency( "b", "1.0" );
-        a.addDependency( "c", "3.0", Artifact.SCOPE_TEST );
+        ArtifactSpec c = createArtifact( "c", "3.0", Artifact.SCOPE_TEST );
 
-        b.addDependency( "c", "2.0", Artifact.SCOPE_RUNTIME );
+        a.addDependency( "c", "2.0", Artifact.SCOPE_RUNTIME );
 
         Artifact modifiedC = createArtifact( "c", "3.0", Artifact.SCOPE_RUNTIME ).artifact;
 
-        ArtifactResolutionResult res = collect( a );
-        assertEquals( "Check artifact list",
-                      new HashSet( Arrays.asList( new Object[]{a.artifact, b.artifact, modifiedC} ) ),
-                      res.getArtifacts() );
+        ArtifactResolutionResult res = collect( createSet( new Object[]{a.artifact, c.artifact} ) );
+        assertEquals( "Check artifact list", createSet( new Object[]{a.artifact, modifiedC} ), res.getArtifacts() );
+        Artifact artifact = getArtifact( "c", res.getArtifacts() );
+        assertEquals( "Check scope", Artifact.SCOPE_RUNTIME, artifact.getScope() );
     }
 
     public void testResolveCompileScopeOverRuntimeScope()
         throws ArtifactResolutionException
     {
         ArtifactSpec a = createArtifact( "a", "1.0" );
-        ArtifactSpec b = a.addDependency( "b", "1.0" );
-        a.addDependency( "c", "3.0", Artifact.SCOPE_RUNTIME );
+        ArtifactSpec c = createArtifact( "c", "3.0", Artifact.SCOPE_RUNTIME );
 
-        b.addDependency( "c", "2.0", Artifact.SCOPE_COMPILE );
+        a.addDependency( "c", "2.0", Artifact.SCOPE_COMPILE );
 
         Artifact modifiedC = createArtifact( "c", "3.0", Artifact.SCOPE_COMPILE ).artifact;
 
-        ArtifactResolutionResult res = collect( a );
-        assertEquals( "Check artifact list",
-                      new HashSet( Arrays.asList( new Object[]{a.artifact, b.artifact, modifiedC} ) ),
-                      res.getArtifacts() );
+        ArtifactResolutionResult res = collect( createSet( new Object[]{a.artifact, c.artifact} ) );
+        assertEquals( "Check artifact list", createSet( new Object[]{a.artifact, modifiedC} ), res.getArtifacts() );
+        Artifact artifact = getArtifact( "c", res.getArtifacts() );
+        assertEquals( "Check scope", Artifact.SCOPE_COMPILE, artifact.getScope() );
+    }
+
+    public void testResolveCompileScopeOverProvidedScope()
+        throws ArtifactResolutionException
+    {
+        ArtifactSpec a = createArtifact( "a", "1.0" );
+        ArtifactSpec c = createArtifact( "c", "3.0", Artifact.SCOPE_PROVIDED );
+
+        a.addDependency( "c", "2.0", Artifact.SCOPE_COMPILE );
+
+        Artifact modifiedC = createArtifact( "c", "3.0", Artifact.SCOPE_COMPILE ).artifact;
+
+        ArtifactResolutionResult res = collect( createSet( new Object[]{a.artifact, c.artifact} ) );
+        assertEquals( "Check artifact list", createSet( new Object[]{a.artifact, modifiedC} ), res.getArtifacts() );
+        Artifact artifact = getArtifact( "c", res.getArtifacts() );
+        assertEquals( "Check scope", Artifact.SCOPE_COMPILE, artifact.getScope() );
+    }
+
+    public void testResolveRuntimeScopeOverProvidedScope()
+        throws ArtifactResolutionException
+    {
+        ArtifactSpec a = createArtifact( "a", "1.0" );
+        ArtifactSpec c = createArtifact( "c", "3.0", Artifact.SCOPE_PROVIDED );
+
+        a.addDependency( "c", "2.0", Artifact.SCOPE_RUNTIME );
+
+        Artifact modifiedC = createArtifact( "c", "3.0", Artifact.SCOPE_RUNTIME ).artifact;
+
+        ArtifactResolutionResult res = collect( createSet( new Object[]{a.artifact, c.artifact} ) );
+        assertEquals( "Check artifact list", createSet( new Object[]{a.artifact, modifiedC} ), res.getArtifacts() );
+        Artifact artifact = getArtifact( "c", res.getArtifacts() );
+        assertEquals( "Check scope", Artifact.SCOPE_RUNTIME, artifact.getScope() );
+    }
+
+    public void testProvidedScopeNotTransitive()
+        throws ArtifactResolutionException
+    {
+        ArtifactSpec a = createArtifact( "a", "1.0", Artifact.SCOPE_PROVIDED );
+        ArtifactSpec b = createArtifact( "b", "1.0" );
+        b.addDependency( "c", "3.0", Artifact.SCOPE_PROVIDED );
+
+        ArtifactResolutionResult res = collect( createSet( new Object[]{a.artifact, b.artifact} ) );
+        assertEquals( "Check artifact list", createSet( new Object[]{a.artifact, b.artifact} ), res.getArtifacts() );
+    }
+
+    public void testTestScopeNotTransitive()
+        throws ArtifactResolutionException
+    {
+        ArtifactSpec a = createArtifact( "a", "1.0", Artifact.SCOPE_TEST );
+        ArtifactSpec b = createArtifact( "b", "1.0" );
+        b.addDependency( "c", "3.0", Artifact.SCOPE_TEST );
+
+        ArtifactResolutionResult res = collect( createSet( new Object[]{a.artifact, b.artifact} ) );
+        assertEquals( "Check artifact list", createSet( new Object[]{a.artifact, b.artifact} ), res.getArtifacts() );
+    }
+
+    private Artifact getArtifact( String id, Set artifacts )
+    {
+        for ( Iterator i = artifacts.iterator(); i.hasNext(); )
+        {
+            Artifact a = (Artifact) i.next();
+            if ( a.getArtifactId().equals( id ) && a.getGroupId().equals( GROUP_ID ) )
+            {
+                return a;
+            }
+        }
+        return null;
+    }
+
+    private ArtifactResolutionResult collect( Set artifacts )
+        throws ArtifactResolutionException
+    {
+        return artifactCollector.collect( artifacts, projectArtifact.artifact, null, null, source, null,
+                                          artifactFactory );
     }
 
     private ArtifactResolutionResult collect( ArtifactSpec a )
@@ -167,19 +274,39 @@
                                           source, null, artifactFactory );
     }
 
+    private ArtifactResolutionResult collect( ArtifactSpec a, ArtifactFilter filter )
+        throws ArtifactResolutionException
+    {
+        return artifactCollector.collect( Collections.singleton( a.artifact ), projectArtifact.artifact, null, null,
+                                          source, filter, artifactFactory );
+    }
+
+    private ArtifactResolutionResult collect( ArtifactSpec a, Artifact managedVersion )
+        throws ArtifactResolutionException
+    {
+        return artifactCollector.collect( Collections.singleton( a.artifact ), projectArtifact.artifact,
+                                          Collections.singleton( managedVersion ), null, null, source, null,
+                                          artifactFactory );
+    }
+
     private ArtifactSpec createArtifact( String id, String version )
     {
-        return createArtifact( id, version, null );
+        return createArtifact( id, version, Artifact.SCOPE_COMPILE );
     }
 
     private ArtifactSpec createArtifact( String id, String version, String scope )
     {
         ArtifactSpec spec = new ArtifactSpec();
-        spec.artifact = artifactFactory.createArtifact( "test", id, version, scope, "jar" );
+        spec.artifact = artifactFactory.createArtifact( GROUP_ID, id, version, scope, "jar" );
         source.artifacts.put( spec.artifact.getId(), spec );
         return spec;
     }
 
+    private static Set createSet( Object[] x )
+    {
+        return new HashSet( Arrays.asList( x ) );
+    }
+
     private class ArtifactSpec
     {
         Artifact artifact;
@@ -199,7 +326,7 @@
         }
     }
 
-    private static class Source
+    private class Source
         implements ArtifactMetadataSource
     {
         Map artifacts = new HashMap();
@@ -208,7 +335,31 @@
             throws ArtifactMetadataRetrievalException, ArtifactResolutionException
         {
             ArtifactSpec a = (ArtifactSpec) artifacts.get( artifact.getId() );
-            return a.dependencies;
+            return createArtifacts( artifactFactory, a.dependencies, artifact.getScope(),
+                                    artifact.getDependencyFilter() );
+        }
+
+        private Set createArtifacts( ArtifactFactory artifactFactory, Set dependencies, String inheritedScope,
+                                     ArtifactFilter dependencyFilter )
+        {
+            Set projectArtifacts = new HashSet();
+
+            for ( Iterator i = dependencies.iterator(); i.hasNext(); )
+            {
+                Artifact d = (Artifact) i.next();
+
+                Artifact artifact = artifactFactory.createArtifact( d.getGroupId(), d.getArtifactId(), d.getVersion(),
+                                                                    d.getScope(), d.getType(), inheritedScope );
+
+                if ( artifact != null && ( dependencyFilter == null || dependencyFilter.include( artifact ) ) )
+                {
+                    artifact.setDependencyFilter( dependencyFilter );
+
+                    projectArtifacts.add( artifact );
+                }
+            }
+
+            return projectArtifacts;
         }
     }
 }

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=191773&r1=191772&r2=191773&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Tue Jun 21 23:46:26 2005
@@ -18,6 +18,7 @@
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
@@ -213,7 +214,7 @@
 
                 Artifact pluginArtifact = artifactFactory.createArtifact( groupId, artifactId, version,
                                                                           Artifact.SCOPE_RUNTIME,
-                                                                          MojoDescriptor.MAVEN_PLUGIN, null );
+                                                                          MojoDescriptor.MAVEN_PLUGIN );
 
                 addPlugin( pluginKey, pluginArtifact, project, localRepository );
 
@@ -555,10 +556,13 @@
                                                                               artifactFactory );
 
                 List remoteArtifactRepositories = project.getRemoteArtifactRepositories();
-                ArtifactResolutionResult result = artifactResolver.resolveTransitively( pluginArtifact,
+                ArtifactRepository localRepository = session.getLocalRepository();
+                Set dependencies = metadataSource.retrieve( pluginArtifact, localRepository,
+                                                            remoteArtifactRepositories );
+
+                ArtifactResolutionResult result = artifactResolver.resolveTransitively( dependencies, pluginArtifact,
                                                                                         remoteArtifactRepositories,
-                                                                                        session.getLocalRepository(),
-                                                                                        metadataSource,
+                                                                                        localRepository, metadataSource,
                                                                                         artifactFilter );
 
                 Set resolved = result.getArtifacts();
@@ -582,7 +586,7 @@
                 ArtifactFilter distroProvidedFilter = new InversionArtifactFilter( artifactFilter );
 
                 ArtifactResolutionResult distroProvidedResult = artifactResolver
-                    .resolveTransitively( pluginArtifact, remoteArtifactRepositories, session.getLocalRepository(),
+                    .resolveTransitively( dependencies, pluginArtifact, remoteArtifactRepositories, localRepository,
                                           metadataSource, distroProvidedFilter );
 
                 Set distroProvided = distroProvidedResult.getArtifacts();
@@ -601,6 +605,10 @@
             catch ( PlexusContainerException e )
             {
                 throw new PluginConfigurationException( "Cannot start plugin container", e );
+            }
+            catch ( ArtifactMetadataRetrievalException e )
+            {
+                throw new PluginConfigurationException( "Cannot resolve plugin dependencies", e );
             }
             finally
             {

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=191773&r1=191772&r2=191773&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Tue Jun 21 23:46:26 2005
@@ -268,7 +268,7 @@
         for ( Iterator i = lineage.iterator(); i.hasNext(); )
         {
             MavenProject currentProject = (MavenProject) i.next();
-            
+
             Model current = currentProject.getModel();
 
             forcePluginExecutionIdCollision( pomLocation, current );
@@ -312,7 +312,9 @@
                     }
                     catch ( IllegalStateException collisionException )
                     {
-                        throw new ProjectBuildingException( "Detected illegal plugin-execution configuration in: " + pomLocation + " Error output: \n\n" + collisionException.getMessage(), collisionException ); 
+                        throw new ProjectBuildingException(
+                            "Detected illegal plugin-execution configuration in: " + pomLocation +
+                                " Error output: \n\n" + collisionException.getMessage(), collisionException );
                     }
                 }
             }
@@ -388,7 +390,7 @@
         {
             Artifact parentArtifact = artifactFactory.createArtifact( parentProject.getGroupId(),
                                                                       parentProject.getArtifactId(),
-                                                                      parentProject.getVersion(), null, "pom", null );
+                                                                      parentProject.getVersion(), null, "pom" );
             project.setParentArtifact( parentArtifact );
         }
 
@@ -450,7 +452,7 @@
             // ----------------------------------------------------------------------
 
             Artifact artifact = artifactFactory.createArtifact( parentModel.getGroupId(), parentModel.getArtifactId(),
-                                                                parentModel.getVersion(), null, "pom", null );
+                                                                parentModel.getVersion(), null, "pom" );
 
             model = findModelFromRepository( artifact, aggregatedRemoteWagonRepositories, localRepository );
 
@@ -535,9 +537,7 @@
 
     protected Set createArtifacts( List dependencies )
     {
-        // TODO: merge with MavenMetadataSource properly
-        return new MavenMetadataSource( artifactResolver, this, artifactFactory ).createArtifacts( dependencies, null,
-                                                                                                   null );
+        return MavenMetadataSource.createArtifacts( artifactFactory, dependencies, null, null );
     }
 
     protected Set createPluginArtifacts( List plugins )
@@ -559,7 +559,7 @@
             }
 
             Artifact artifact = artifactFactory.createArtifact( p.getGroupId(), p.getArtifactId(), version, null,
-                                                                "maven-plugin", null );
+                                                                "maven-plugin" );
             if ( artifact != null )
             {
                 pluginArtifacts.add( artifact );

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=191773&r1=191772&r2=191773&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Tue Jun 21 23:46:26 2005
@@ -139,10 +139,11 @@
                 IOUtil.close( reader );
             }
         }
-        return createArtifacts( dependencies, artifact.getScope(), artifact.getDependencyFilter() );
+        return createArtifacts( artifactFactory, dependencies, artifact.getScope(), artifact.getDependencyFilter() );
     }
 
-    public Set createArtifacts( List dependencies, String inheritedScope, ArtifactFilter dependencyFilter )
+    public static Set createArtifacts( ArtifactFactory artifactFactory, List dependencies, String inheritedScope,
+                                       ArtifactFilter dependencyFilter )
     {
         Set projectArtifacts = new HashSet();
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org