You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2012/10/14 00:51:30 UTC

svn commit: r1397965 - in /maven/plugins/trunk/maven-project-info-reports-plugin/src: it/full-pom/pom.xml main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependencyManagementRenderer.java

Author: hboutemy
Date: Sat Oct 13 22:51:30 2012
New Revision: 1397965

URL: http://svn.apache.org/viewvc?rev=1397965&view=rev
Log:
[MPIR-255] check if version is a range before retrieving metadata from repository

Modified:
    maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/pom.xml
    maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependencyManagementRenderer.java

Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/pom.xml?rev=1397965&r1=1397964&r2=1397965&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/pom.xml (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/pom.xml Sat Oct 13 22:51:30 2012
@@ -140,13 +140,17 @@
         <artifactId>doxia-sink-api</artifactId>
         <version>[1.0,)</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-artifact</artifactId>
+        <version>2.1.0</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact</artifactId>
-      <version>2.1.0</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.doxia</groupId>

Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependencyManagementRenderer.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependencyManagementRenderer.java?rev=1397965&r1=1397964&r2=1397965&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependencyManagementRenderer.java (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependencyManagementRenderer.java Sat Oct 13 22:51:30 2012
@@ -21,6 +21,7 @@ package org.apache.maven.report.projecti
 
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -31,6 +32,8 @@ import org.apache.maven.artifact.metadat
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.versioning.ArtifactVersion;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.License;
@@ -220,14 +223,33 @@ public class DependencyManagementRendere
         String url = null;
         try
         {
-            List<ArtifactVersion> versions =
-                artifactMetadataSource.retrieveAvailableVersions( artifact, localRepository, remoteRepositories );
+            VersionRange range = VersionRange.createFromVersionSpec( dependency.getVersion() );
 
-            if ( versions.size() > 0 )
+            if ( range.getRecommendedVersion() == null )
             {
-                Collections.sort( versions );
-                
-                artifact.setVersion( versions.get( versions.size() - 1 ).toString() );
+                // MPIR-216: no direct version but version range: need to choose one precise version
+                log.debug( "Resolving range for DependencyManagement on " + artifact.getId() );
+
+                List<ArtifactVersion> versions =
+                    artifactMetadataSource.retrieveAvailableVersions( artifact, localRepository, remoteRepositories );
+    
+                // only use versions from range
+                for ( Iterator<ArtifactVersion> iter = versions.iterator(); iter.hasNext(); )
+                {
+                    if ( ! range.containsVersion( iter.next() ) )
+                    {
+                        iter.remove();
+                    }
+                }
+
+                // select latest, assuming pom information will be the most accurate
+                if ( versions.size() > 0 )
+                {
+                    Collections.sort( versions );
+                    
+                    artifact.setVersion( versions.get( versions.size() - 1 ).toString() );
+                    log.debug( "DependencyManagement resolved: " + artifact.getId() );
+                }
             }
 
             url =
@@ -247,6 +269,10 @@ public class DependencyManagementRendere
                 licensesBuffer.append( licenseCell );
             }
         }
+        catch ( InvalidVersionSpecificationException e )
+        {
+            log.warn( "Unable to parse version for " + artifact.getId(), e );
+        }
         catch ( ArtifactMetadataRetrievalException e )
         {
             log.warn( "Unable to retrieve versions for " + artifact.getId() + " from repository.", e );