You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2006/08/29 22:54:12 UTC

svn commit: r438207 - in /maven/components/branches/maven-2.0.x/maven-project/src: main/java/org/apache/maven/profiles/ main/java/org/apache/maven/project/artifact/ test/java/org/apache/maven/project/artifact/

Author: jdcasey
Date: Tue Aug 29 13:54:12 2006
New Revision: 438207

URL: http://svn.apache.org/viewvc?rev=438207&view=rev
Log:
Merging from 438189 on trunk, to fix exclusions from polluting other dependencies during dependency artifact creation, and to add a new embedder-compatible version of the DefaultProfileManager constructor which accepts a Settings instance.

Modified:
    maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
    maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
    maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/artifact/MavenMetadataSourceTest.java

Modified: maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java?rev=438207&r1=438206&r2=438207&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java (original)
+++ maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java Tue Aug 29 13:54:12 2006
@@ -66,18 +66,36 @@
      */
     public DefaultProfileManager( PlexusContainer container, Properties props )
     {
-        this( container, (Settings)null );
-        if (props != null) {
-            systemProperties = props;
-        }
+        this( container, (Settings)null, props );
         
     }
 
+    /**
+     * @deprecated without passing in the system properties, the SystemPropertiesProfileActivator will not work correctly
+     * in embedded envirnments.
+     */
     public DefaultProfileManager( PlexusContainer container, Settings settings )
     {
         this.container = container;
 
         loadSettingsProfiles( settings );
+    }
+    
+    /**
+     * the properties passed to the profile manager are the props that
+     * are passed to maven, possibly containing profile activator properties
+     *
+     */
+    public DefaultProfileManager( PlexusContainer container, Settings settings, Properties props )
+    {
+        this.container = container;
+
+        loadSettingsProfiles( settings );
+        
+        if ( props != null )
+        {
+            systemProperties = props;
+        }
     }
     
     public Properties getSystemProperties() {

Modified: maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=438207&r1=438206&r2=438207&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original)
+++ maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Tue Aug 29 13:54:12 2006
@@ -48,7 +48,6 @@
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -337,7 +336,9 @@
                 artifact.setFile( new File( d.getSystemPath() ) );
             }
 
-            if ( artifact != null && ( dependencyFilter == null || dependencyFilter.include( artifact ) ) )
+            ArtifactFilter artifactFilter = dependencyFilter;
+            
+            if ( artifact != null && ( artifactFilter == null || artifactFilter.include( artifact ) ) )
             {
                 if ( d.getExclusions() != null && !d.getExclusions().isEmpty() )
                 {
@@ -350,20 +351,20 @@
 
                     ArtifactFilter newFilter = new ExcludesArtifactFilter( exclusions );
 
-                    if ( dependencyFilter != null )
+                    if ( artifactFilter != null )
                     {
                         AndArtifactFilter filter = new AndArtifactFilter();
-                        filter.add( dependencyFilter );
+                        filter.add( artifactFilter );
                         filter.add( newFilter );
-                        dependencyFilter = filter;
+                        artifactFilter = filter;
                     }
                     else
                     {
-                        dependencyFilter = newFilter;
+                        artifactFilter = newFilter;
                     }
                 }
 
-                artifact.setDependencyFilter( dependencyFilter );
+                artifact.setDependencyFilter( artifactFilter );
 
                 if ( project != null )
                 {

Modified: maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/artifact/MavenMetadataSourceTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/artifact/MavenMetadataSourceTest.java?rev=438207&r1=438206&r2=438207&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/artifact/MavenMetadataSourceTest.java (original)
+++ maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/artifact/MavenMetadataSourceTest.java Tue Aug 29 13:54:12 2006
@@ -3,18 +3,71 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DependencyManagement;
+import org.apache.maven.model.Exclusion;
 import org.apache.maven.model.Model;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.injection.ModelDefaultsInjector;
 import org.codehaus.plexus.PlexusTestCase;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 public class MavenMetadataSourceTest
     extends PlexusTestCase
 {
+    
+    public void testShouldNotCarryExclusionsOverFromDependencyToDependency()
+        throws Exception
+    {
+        Dependency dep1 = new Dependency();
+        dep1.setGroupId( "test" );
+        dep1.setArtifactId( "test-artifact" );
+        dep1.setVersion( "1" );
+        dep1.setType( "jar" );
+        
+        Exclusion exc = new Exclusion();
+        exc.setGroupId( "test" );
+        exc.setArtifactId( "test-artifact3" );
+        
+        dep1.addExclusion( exc );
+        
+        Dependency dep2 = new Dependency();
+        dep2.setGroupId( "test" );
+        dep2.setArtifactId( "test-artifact2" );
+        dep2.setVersion( "1" );
+        dep2.setType( "jar" );
+        
+        List deps = new ArrayList();
+        deps.add( dep1 );
+        deps.add( dep2 );
+        
+        ArtifactFactory factory = ( ArtifactFactory ) lookup( ArtifactFactory.ROLE );
+        
+        ArtifactFilter dependencyFilter = new ScopeArtifactFilter( Artifact.SCOPE_COMPILE );
+        
+        MavenProject project = new MavenProject( new Model() );
+        
+        Set result = MavenMetadataSource.createArtifacts( factory, deps, null, dependencyFilter, project );
+        
+        for ( Iterator it = result.iterator(); it.hasNext(); )
+        {
+            Artifact artifact = ( Artifact ) it.next();
+            
+            if ( "test-artifact2".equals( artifact.getArtifactId() ) )
+            {
+                ArtifactFilter filter = artifact.getDependencyFilter();
+                
+                assertSame( dependencyFilter, filter );
+            }
+        }
+    }
 
     public void testShouldUseCompileScopeIfDependencyScopeEmpty()
         throws Exception