You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/06/12 20:45:37 UTC

svn commit: r784227 - in /maven/components/trunk: maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java

Author: bentmann
Date: Fri Jun 12 18:45:37 2009
New Revision: 784227

URL: http://svn.apache.org/viewvc?rev=784227&view=rev
Log:
o Restored backward-compat with regard to handling of duplicate dependencies during metadata retrieval

Modified:
    maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
    maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java

Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java?rev=784227&r1=784226&r2=784227&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java (original)
+++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java Fri Jun 12 18:45:37 2009
@@ -176,6 +176,14 @@
     }
     */
 
+    public void testDuplicateDependenciesCauseLastDeclarationToBePickedInLenientMode()
+        throws Exception
+    {
+        PomTestWrapper pom = buildPom( "dependencies-different-versions", true, null );
+        assertEquals( 1, ( (List<?>) pom.getValue( "dependencies" ) ).size() );
+        assertEquals( "1.1", pom.getValue( "dependencies[1]/version" ) );
+    }
+
     /* MNG-3567*/
     public void testParentInterpolation()
         throws Exception
@@ -1574,6 +1582,13 @@
     private PomTestWrapper buildPom( String pomPath, Properties executionProperties, String... profileIds )
         throws ProjectBuildingException
     {
+        return buildPom( pomPath, false, executionProperties, profileIds );
+    }
+
+    private PomTestWrapper buildPom( String pomPath, boolean lenientValidation, Properties executionProperties,
+                                     String... profileIds )
+        throws ProjectBuildingException
+    {
         File pomFile = new File( testDirectory, pomPath );
         if ( pomFile.isDirectory() )
         {
@@ -1582,12 +1597,14 @@
 
         ProjectBuildingRequest config = new DefaultProjectBuildingRequest();
 
-        String localRepoUrl = System.getProperty( "maven.repo.local", System.getProperty( "user.home" ) + "/.m2/repository" );
+        String localRepoUrl =
+            System.getProperty( "maven.repo.local", System.getProperty( "user.home" ) + "/.m2/repository" );
         localRepoUrl = "file://" + localRepoUrl;
         config.setLocalRepository( new DefaultArtifactRepository( "local", localRepoUrl, new DefaultRepositoryLayout() ) );
         config.setActiveProfileIds( Arrays.asList( profileIds ) );
         config.setExecutionProperties( executionProperties );
-        
+        config.setLenientValidation( lenientValidation );
+
         return new PomTestWrapper( pomFile, projectBuilder.build( pomFile, config ) );
     }
 

Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java?rev=784227&r1=784226&r2=784227&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java Fri Jun 12 18:45:37 2009
@@ -67,6 +67,21 @@
 
             build.setPlugins( new ArrayList<Plugin>( normalized.values() ) );
         }
+
+        if ( request.istLenientValidation() )
+        {
+            /*
+             * NOTE: This is to keep backward-compat with Maven 2.x which did not validate that dependencies are unique
+             * within a single POM. Upon multiple declarations, 2.x just kept the last one. So when we're in lenient
+             * mode for metadata retrieval, we have to deal with such broken POMs and mimic the way 2.x works.
+             */
+            Map<String, Dependency> dependencies = new LinkedHashMap<String, Dependency>();
+            for ( Dependency dependency : model.getDependencies() )
+            {
+                dependencies.put( dependency.getManagementKey(), dependency );
+            }
+            model.setDependencies( new ArrayList<Dependency>( dependencies.values() ) );
+        }
     }
 
     private static class DuplicateMerger