Author: bentmann
Date: Thu Nov 5 12:37:30 2009
New Revision: 833040
URL:
http://svn.apache.org/viewvc?rev=833040&view=revLog:
[MNG-4427] Bad error message with duplicate dependencies that don't declare a version
Modified:
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java
URL:
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java?rev=833040&r1=833039&r2=833040&view=diff==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java Thu Nov 5 12:37:30 2009
@@ -69,20 +69,19 @@
build.setPlugins( new ArrayList<Plugin>( normalized.values() ) );
}
- if ( request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 )
+ /*
+ * NOTE: This is primarily 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 but retained the order of
+ * the first occurrence. So when we're in lenient/compat mode, we have to deal with such broken POMs and mimic
+ * the way 2.x works. When we're in strict mode, the removal of duplicates just saves other merging steps from
+ * aftereffects and bogus error messages.
+ */
+ Map<String, Dependency> dependencies = new LinkedHashMap<String, Dependency>();
+ for ( Dependency dependency : model.getDependencies() )
{
- /*
- * 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/compat mode, 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() ) );
+ dependencies.put( dependency.getManagementKey(), dependency );
}
+ model.setDependencies( new ArrayList<Dependency>( dependencies.values() ) );
}
private static class DuplicateMerger
Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
URL:
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java?rev=833040&r1=833039&r2=833040&view=diff==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java Thu Nov 5 12:37:30 2009
@@ -377,13 +377,17 @@
boolean warning = request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0;
String msg;
- if ( String.valueOf( existing.getVersion() ).equals( dependency.getVersion() ) )
+ if ( StringUtils.isEmpty( existing.getVersion() ) && StringUtils.isEmpty( dependency.getVersion() ) )
{
- msg = "duplicate declaration of " + dependency.getVersion();
+ msg = "duplicate declaration";
+ }
+ else if ( existing.getVersion().equals( dependency.getVersion() ) )
+ {
+ msg = "duplicate declaration of version " + dependency.getVersion();
}
else
{
- msg = existing.getVersion() + " vs " + dependency.getVersion();
+ msg = "version " + existing.getVersion() + " vs " + dependency.getVersion();
}
addViolation( problems, warning, "'" + prefix