You are viewing a plain text version of this content. The canonical link for it is here.
Posted to m2-dev@maven.apache.org by br...@apache.org on 2005/03/17 03:04:35 UTC

cvs commit: maven-components/maven-core/src/test/resources/projects/scope project-with-scoped-dependencies.xml transitive-compile-dep.xml

brett       2005/03/16 18:04:35

  Modified:    maven-core/src/main/java/org/apache/maven/artifact/factory
                        DefaultArtifactFactory.java
               maven-core/src/main/java/org/apache/maven/plugin
                        DefaultPluginManager.java
               maven-core/src/main/java/org/apache/maven/project
                        DefaultMavenProjectBuilder.java MavenProject.java
               maven-core/src/test/java/org/apache/maven/project
                        ProjectClasspathTest.java
               maven-core/src/test/resources/projects/scope
                        project-with-scoped-dependencies.xml
                        transitive-compile-dep.xml
  Log:
  PR: MNG-207
  scope must be considered globally - redefining it weaker must not win.
  
  Revision  Changes    Path
  1.9       +7 -0      maven-components/maven-core/src/main/java/org/apache/maven/artifact/factory/DefaultArtifactFactory.java
  
  Index: DefaultArtifactFactory.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/artifact/factory/DefaultArtifactFactory.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- DefaultArtifactFactory.java	16 Mar 2005 07:36:01 -0000	1.8
  +++ DefaultArtifactFactory.java	17 Mar 2005 02:04:34 -0000	1.9
  @@ -73,6 +73,13 @@
               desiredScope = Artifact.SCOPE_COMPILE;
           }
   
  +        // vvv added to retain compile scope. Remove if you want compile inherited as runtime
  +        else if ( Artifact.SCOPE_COMPILE.equals( scope ) && Artifact.SCOPE_COMPILE.equals( inheritedScope ) )
  +        {
  +            desiredScope = Artifact.SCOPE_COMPILE;
  +        }
  +        // ^^^ added to retain compile scope. Remove if you want compile inherited as runtime
  +
           if ( Artifact.SCOPE_TEST.equals( scope ) || Artifact.SCOPE_TEST.equals( inheritedScope ) )
           {
               desiredScope = Artifact.SCOPE_TEST;
  
  
  
  1.54      +3 -3      maven-components/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
  
  Index: DefaultPluginManager.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- DefaultPluginManager.java	16 Mar 2005 06:29:34 -0000	1.53
  +++ DefaultPluginManager.java	17 Mar 2005 02:04:35 -0000	1.54
  @@ -85,7 +85,7 @@
       protected PathTranslator pathTranslator;
   
       protected ArtifactRepositoryFactory artifactRepositoryFactory;
  -    
  +
       protected MavenSettingsBuilder mavenSettingsBuilder;
   
       public DefaultPluginManager()
  @@ -605,7 +605,7 @@
           Repository pluginRepo = new Repository();
           pluginRepo.setId( "plugin-repository" );
           pluginRepo.setUrl( "http://repo1.maven.org" );
  -        
  +
           ArtifactRepository pluginRepository = artifactRepositoryFactory.createArtifactRepository( pluginRepo, settings );
   
           remotePluginRepositories.add( pluginRepository );
  @@ -628,7 +628,7 @@
                                                                                   context.getLocalRepository(),
                                                                                   sourceReader );
   
  -        project.getArtifacts().addAll( result.getArtifacts().values() );
  +        project.addArtifacts( result.getArtifacts().values() );
       }
   
       // ----------------------------------------------------------------------
  
  
  
  1.53      +2 -2      maven-components/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
  
  Index: DefaultMavenProjectBuilder.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- DefaultMavenProjectBuilder.java	16 Mar 2005 06:56:03 -0000	1.52
  +++ DefaultMavenProjectBuilder.java	17 Mar 2005 02:04:35 -0000	1.53
  @@ -78,7 +78,7 @@
       private ModelDefaultsInjector modelDefaultsInjector;
   
       private ModelInterpolator modelInterpolator;
  -    
  +
       private MavenSettingsBuilder mavenSettingsBuilder;
   
       private ArtifactRepositoryFactory artifactRepositoryFactory;
  @@ -198,7 +198,7 @@
               ArtifactResolutionResult result = artifactResolver.resolveTransitively( project.getArtifacts(), repos,
                                                                                       localRepository, sourceReader );
   
  -            project.getArtifacts().addAll( result.getArtifacts().values() );
  +            project.addArtifacts( result.getArtifacts().values() );
           }
   
           ModelValidationResult validationResult = validator.validate( model );
  
  
  
  1.30      +51 -0     maven-components/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
  
  Index: MavenProject.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/project/MavenProject.java,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- MavenProject.java	16 Mar 2005 04:21:03 -0000	1.29
  +++ MavenProject.java	17 Mar 2005 02:04:35 -0000	1.30
  @@ -18,6 +18,7 @@
    */
   
   import org.apache.maven.artifact.Artifact;
  +import org.apache.maven.artifact.DefaultArtifact;
   import org.apache.maven.model.Build;
   import org.apache.maven.model.CiManagement;
   import org.apache.maven.model.Contributor;
  @@ -40,8 +41,10 @@
   
   import java.io.File;
   import java.util.ArrayList;
  +import java.util.Collection;
   import java.util.Collections;
   import java.util.HashMap;
  +import java.util.HashSet;
   import java.util.Iterator;
   import java.util.List;
   import java.util.Map;
  @@ -644,5 +647,53 @@
   
           return sortedProjects;
       }
  +
  +    public void addArtifacts( Collection newArtifacts )
  +    {
  +//        project.getArtifacts().addAll( result.getArtifacts().values() );
  +        // We need to override the scope if one declared it higher
  +        // TODO: could surely be more efficient, and use the scope handler, be part of maven-artifact...
  +        Map artifacts = new HashMap();
  +        for ( Iterator i = getArtifacts().iterator(); i.hasNext(); )
  +        {
  +            Artifact a = (Artifact) i.next();
  +            artifacts.put( a.getId(), a );
  +        }
  +        for ( Iterator i = newArtifacts.iterator(); i.hasNext(); )
  +        {
  +            Artifact a = (Artifact) i.next();
  +            String id = a.getId();
  +            if ( artifacts.containsKey( id ) )
  +            {
  +                Artifact existing = (Artifact) artifacts.get( id );
  +                boolean updateScope = false;
  +                if ( Artifact.SCOPE_RUNTIME.equals( a.getScope() ) &&
  +                    Artifact.SCOPE_TEST.equals( existing.getScope() ) )
  +                {
  +                    updateScope = true;
  +                }
  +
  +                if ( Artifact.SCOPE_COMPILE.equals( a.getScope() ) &&
  +                    !Artifact.SCOPE_COMPILE.equals( existing.getScope() ) )
  +                {
  +                    updateScope = true;
  +                }
  +
  +                if ( updateScope )
  +                {
  +                    // TODO: Artifact factory?
  +                    Artifact artifact = new DefaultArtifact( existing.getGroupId(), existing.getArtifactId(),
  +                                                             existing.getVersion(), a.getScope(), existing.getType(),
  +                                                             existing.getExtension() );
  +                    artifacts.put( id, artifact );
  +                }
  +            }
  +            else
  +            {
  +                artifacts.put( id, a );
  +            }
  +        }
  +        setArtifacts( new HashSet( artifacts.values() ) );
  +    }
   }
   
  
  
  
  1.5       +16 -5     maven-components/maven-core/src/test/java/org/apache/maven/project/ProjectClasspathTest.java
  
  Index: ProjectClasspathTest.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/test/java/org/apache/maven/project/ProjectClasspathTest.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ProjectClasspathTest.java	16 Mar 2005 05:08:50 -0000	1.4
  +++ ProjectClasspathTest.java	17 Mar 2005 02:04:35 -0000	1.5
  @@ -58,6 +58,10 @@
           checkArtifactIdScope( project, "runtime", "runtime" );
           checkArtifactIdScope( project, "default", "compile" );
   
  +        checkInheritedArtifactIdScope( project, "compile", "compile" );
  +        checkInheritedArtifactIdScope( project, "runtime", "runtime" );
  +        checkInheritedArtifactIdScope( project, "default", "compile" );
  +
           // check all transitive deps of a test dependency are test, except test which is skipped
           artifact = getArtifact( project, "maven-test-test", "scope-test" );
           assertNull( "Check no test dependencies are transitive", artifact );
  @@ -71,11 +75,11 @@
           // check all transitive deps of a runtime dependency are runtime scope, except for test
           checkGroupIdScope( project, "runtime", "runtime" );
   
  -        // check all transitive deps of a compile dependency are runtime scope, except for test
  -        checkGroupIdScope( project, "compile", "runtime" );
  +        // check all transitive deps of a compile dependency are compile scope, except for runtime and test
  +        checkGroupIdScope( project, "compile", "compile" );
   
  -        // check all transitive deps of a default dependency are runtime scope, except for test
  -        checkGroupIdScope( project, "default", "runtime" );
  +        // check all transitive deps of a default dependency are compile scope, except for runtime and test
  +        checkGroupIdScope( project, "default", "compile" );
       }
   
       private void checkGroupIdScope( MavenProject project, String scope, String scopeValue )
  @@ -89,7 +93,7 @@
           artifact = getArtifact( project, groupId, "scope-default" );
           assertEquals( "Check scope", scopeValue, artifact.getScope() );
           artifact = getArtifact( project, groupId, "scope-runtime" );
  -        assertEquals( "Check scope", scopeValue, artifact.getScope() );
  +        assertEquals( "Check scope", "runtime", artifact.getScope() );
       }
   
       private void checkArtifactIdScope( MavenProject project, String scope, String scopeValue )
  @@ -99,6 +103,13 @@
           assertEquals( "Check scope", scopeValue, artifact.getScope() );
       }
   
  +    private void checkInheritedArtifactIdScope( MavenProject project, String scope, String scopeValue )
  +    {
  +        String artifactId = "scope-" + scope;
  +        Artifact artifact = getArtifact( project, "maven-inherited", artifactId );
  +        assertEquals( "Check scope", scopeValue, artifact.getScope() );
  +    }
  +
       private Artifact getArtifact( MavenProject project, String groupId, String artifactId )
       {
           for ( Iterator i = project.getArtifacts().iterator(); i.hasNext(); )
  
  
  
  1.3       +19 -0     maven-components/maven-core/src/test/resources/projects/scope/project-with-scoped-dependencies.xml
  
  Index: project-with-scoped-dependencies.xml
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/test/resources/projects/scope/project-with-scoped-dependencies.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- project-with-scoped-dependencies.xml	10 Mar 2005 01:35:16 -0000	1.2
  +++ project-with-scoped-dependencies.xml	17 Mar 2005 02:04:35 -0000	1.3
  @@ -34,6 +34,25 @@
         <scope>compile</scope>
       </dependency>
   
  +    <dependency>
  +      <groupId>maven-inherited</groupId>
  +      <artifactId>scope-default</artifactId>
  +      <version>1.0</version>
  +    </dependency>
  +
  +    <dependency>
  +      <groupId>maven-inherited</groupId>
  +      <artifactId>scope-compile</artifactId>
  +      <version>1.0</version>
  +      <scope>runtime</scope>
  +    </dependency>
  +
  +    <dependency>
  +      <groupId>maven-inherited</groupId>
  +      <artifactId>scope-runtime</artifactId>
  +      <version>1.0</version>
  +      <scope>runtime</scope>
  +    </dependency>
     </dependencies>
   
   </model>
  
  
  
  1.3       +20 -0     maven-components/maven-core/src/test/resources/projects/scope/transitive-compile-dep.xml
  
  Index: transitive-compile-dep.xml
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/test/resources/projects/scope/transitive-compile-dep.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- transitive-compile-dep.xml	10 Mar 2005 01:35:16 -0000	1.2
  +++ transitive-compile-dep.xml	17 Mar 2005 02:04:35 -0000	1.3
  @@ -33,6 +33,26 @@
         <scope>compile</scope>
       </dependency>
   
  +    <dependency>
  +      <groupId>maven-inherited</groupId>
  +      <artifactId>scope-compile</artifactId>
  +      <version>1.0</version>
  +      <scope>compile</scope>
  +    </dependency>
  +
  +    <dependency>
  +      <groupId>maven-inherited</groupId>
  +      <artifactId>scope-default</artifactId>
  +      <version>1.0</version>
  +      <scope>runtime</scope>
  +    </dependency>
  +
  +    <dependency>
  +      <groupId>maven-inherited</groupId>
  +      <artifactId>scope-runtime</artifactId>
  +      <version>1.0</version>
  +      <scope>test</scope>
  +    </dependency>
     </dependencies>
   
   </model>