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