You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kw...@apache.org on 2022/11/07 13:14:50 UTC

[maven] 01/01: [MNG-7561] never resolve version ranges with same lower and upper bound

This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch bugfix/MNG-7561-Maven3.9-backport
in repository https://gitbox.apache.org/repos/asf/maven.git

commit c3efd67b40b19269ef711841ec2879dded7382ea
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Wed Oct 12 09:11:10 2022 +0200

    [MNG-7561] never resolve version ranges with same lower and upper bound
    
    Co-authored-by: Guillaume Nodet <gn...@gmail.com>
---
 .../internal/DefaultVersionRangeResolver.java      | 41 +++++++++++++---------
 1 file changed, 25 insertions(+), 16 deletions(-)

diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java
index 491376f67..0879b696b 100644
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java
@@ -47,6 +47,7 @@ import org.eclipse.aether.util.version.GenericVersionScheme;
 import org.eclipse.aether.version.InvalidVersionSpecificationException;
 import org.eclipse.aether.version.Version;
 import org.eclipse.aether.version.VersionConstraint;
+import org.eclipse.aether.version.VersionRange;
 import org.eclipse.aether.version.VersionScheme;
 
 import javax.inject.Inject;
@@ -146,28 +147,36 @@ public class DefaultVersionRangeResolver
         }
         else
         {
-            Map<String, ArtifactRepository> versionIndex = getVersions( session, result, request );
-
-            List<Version> versions = new ArrayList<>();
-            for ( Map.Entry<String, ArtifactRepository> v : versionIndex.entrySet() )
+            VersionRange.Bound lowerBound = versionConstraint.getRange().getLowerBound();
+            if ( lowerBound != null && lowerBound.equals( versionConstraint.getRange().getUpperBound() ) )
+            {
+                result.addVersion( lowerBound.getVersion() );
+            }
+            else
             {
-                try
+                Map<String, ArtifactRepository> versionIndex = getVersions( session, result, request );
+
+                List<Version> versions = new ArrayList<>();
+                for ( Map.Entry<String, ArtifactRepository> v : versionIndex.entrySet() )
                 {
-                    Version ver = versionScheme.parseVersion( v.getKey() );
-                    if ( versionConstraint.containsVersion( ver ) )
+                    try
+                    {
+                        Version ver = versionScheme.parseVersion( v.getKey() );
+                        if ( versionConstraint.containsVersion( ver ) )
+                        {
+                            versions.add( ver );
+                            result.setRepository( ver, v.getValue() );
+                        }
+                    }
+                    catch ( InvalidVersionSpecificationException e )
                     {
-                        versions.add( ver );
-                        result.setRepository( ver, v.getValue() );
+                        result.addException( e );
                     }
                 }
-                catch ( InvalidVersionSpecificationException e )
-                {
-                    result.addException( e );
-                }
-            }
 
-            Collections.sort( versions );
-            result.setVersions( versions );
+                Collections.sort( versions );
+                result.setVersions( versions );
+            }
         }
 
         return result;