MNG-5727 fixed cryptic exception when managed depenency has no <version>

Signed-off-by: Igor Fedorenko <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/ce6f0bfd
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/ce6f0bfd
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/ce6f0bfd

Branch: refs/heads/master
Commit: ce6f0bfdb527e20c3afbd76b9c742e07b13d25b2
Parents: 5c84bd3
Author: Igor Fedorenko <[email protected]>
Authored: Tue Nov 25 15:44:43 2014 -0500
Committer: Igor Fedorenko <[email protected]>
Committed: Tue Nov 25 19:11:00 2014 -0500

----------------------------------------------------------------------
 .../maven/bridge/MavenRepositorySystem.java     |  5 ++++
 .../maven/project/DefaultProjectBuilder.java    |  6 ++---
 .../maven/project/ProjectBuilderTest.java       | 19 ++++++++++++++++
 .../projects/versionless-managed-dependency.xml | 24 ++++++++++++++++++++
 4 files changed, 50 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/ce6f0bfd/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java
----------------------------------------------------------------------
diff --git 
a/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java 
b/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java
index 839c089..e01ffc3 100644
--- 
a/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java
+++ 
b/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java
@@ -107,6 +107,11 @@ public class MavenRepositorySystem
     // DefaultProjectBuilder
     public Artifact createDependencyArtifact( Dependency d )
     {
+        if ( d.getVersion() == null )
+        {
+            return null;
+        }
+
         VersionRange versionRange;
         try
         {

http://git-wip-us.apache.org/repos/asf/maven/blob/ce6f0bfd/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
----------------------------------------------------------------------
diff --git 
a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java 
b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
index e359bcf..5365756 100644
--- 
a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
+++ 
b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
@@ -807,12 +807,10 @@ public class DefaultProjectBuilder
                 {
                     Artifact artifact = 
repositorySystem.createDependencyArtifact( d );
 
-                    if ( artifact == null )
+                    if ( artifact != null )
                     {
-                        map = Collections.emptyMap();
+                        map.put( d.getManagementKey(), artifact );
                     }
-
-                    map.put( d.getManagementKey(), artifact );
                 }
             }
             else

http://git-wip-us.apache.org/repos/asf/maven/blob/ce6f0bfd/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
----------------------------------------------------------------------
diff --git 
a/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java 
b/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
index add3efe..5511cb1 100644
--- a/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
@@ -65,4 +65,23 @@ public class ProjectBuilderTest
 
         assertNotNull( result.getProject().getParentFile() );
     }
+
+    public void testVersionlessManagedDependency()
+        throws Exception
+    {
+        File pomFile = new File( 
"src/test/resources/projects/versionless-managed-dependency.xml" );
+        MavenSession mavenSession = createMavenSession( null );
+        ProjectBuildingRequest configuration = new 
DefaultProjectBuildingRequest();
+        configuration.setRepositorySession( 
mavenSession.getRepositorySession() );
+
+        try
+        {
+            lookup( org.apache.maven.project.ProjectBuilder.class ).build( 
pomFile, configuration );
+            fail();
+        }
+        catch ( ProjectBuildingException e )
+        {
+            // this is expected
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/maven/blob/ce6f0bfd/maven-core/src/test/resources/projects/versionless-managed-dependency.xml
----------------------------------------------------------------------
diff --git 
a/maven-core/src/test/resources/projects/versionless-managed-dependency.xml 
b/maven-core/src/test/resources/projects/versionless-managed-dependency.xml
new file mode 100644
index 0000000..40bf295
--- /dev/null
+++ b/maven-core/src/test/resources/projects/versionless-managed-dependency.xml
@@ -0,0 +1,24 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>test</groupId>
+  <artifactId>versionless-managed-dependency.xml</artifactId>
+  <version>0.0.1-SNAPSHOT</version>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.its</groupId>
+      <artifactId>a</artifactId>
+    </dependency>
+  </dependencies>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.apache.maven.its</groupId>
+        <artifactId>a</artifactId>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+</project>

Reply via email to