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 );