This is an automated email from the ASF dual-hosted git repository. henning pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push: new e410a6ce1 MNG-7529 alternate fix (#795) e410a6ce1 is described below commit e410a6ce1dea787258e5675e71a672144e3f0419 Author: Henning Schmiedehausen <henn...@schmiedehausen.org> AuthorDate: Wed Aug 31 09:47:00 2022 -0700 MNG-7529 alternate fix (#795) [MNG-7529] Maven resolver makes bad repository choices Structure the version checks slightly different to make the separation between repository versions and the version range resolution clearer. --- .../internal/DefaultVersionRangeResolver.java | 40 +++++++++++++--------- 1 file changed, 24 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 a4f66a6e9..d3a09e53c 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 @@ -19,6 +19,7 @@ package org.apache.maven.repository.internal; * under the License. */ +import org.apache.maven.artifact.ArtifactUtils; import org.apache.maven.artifact.repository.metadata.Versioning; import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader; import org.eclipse.aether.RepositoryEvent; @@ -69,8 +70,6 @@ public class DefaultVersionRangeResolver private static final String MAVEN_METADATA_XML = "maven-metadata.xml"; - private static final String SNAPSHOT = "SNAPSHOT"; - private final MetadataResolver metadataResolver; private final SyncContextFactory syncContextFactory; private final RepositoryEventDispatcher repositoryEventDispatcher; @@ -185,11 +184,12 @@ public class DefaultVersionRangeResolver } Versioning versioning = readVersions( session, trace, metadataResult.getMetadata(), repository, result ); - RemoteRepository remoteRepository = metadataResult.getRequest().getRepository(); + + versioning = filterVersionsByRepositoryType( versioning, metadataResult.getRequest().getRepository() ); for ( String version : versioning.getVersions() ) { - if ( isEnabled( remoteRepository, version ) && !versionIndex.containsKey( version ) ) + if ( !versionIndex.containsKey( version ) ) { versionIndex.put( version, repository ); } @@ -199,18 +199,6 @@ public class DefaultVersionRangeResolver return versionIndex; } - private boolean isEnabled( RemoteRepository remoteRepository, String version ) - { - if ( remoteRepository == null ) - { - return true; - } - - boolean snapshot = version != null && version.endsWith( SNAPSHOT ); - - return remoteRepository.getPolicy( snapshot ).isEnabled(); - } - private Versioning readVersions( RepositorySystemSession session, RequestTrace trace, Metadata metadata, ArtifactRepository repository, VersionRangeResult result ) { @@ -242,6 +230,26 @@ public class DefaultVersionRangeResolver return ( versioning != null ) ? versioning : new Versioning(); } + private Versioning filterVersionsByRepositoryType( Versioning versioning, RemoteRepository remoteRepository ) + { + if ( remoteRepository == null ) + { + return versioning; + } + + Versioning filteredVersions = versioning.clone(); + + for ( String version : versioning.getVersions() ) + { + if ( !remoteRepository.getPolicy( ArtifactUtils.isSnapshot( version ) ).isEnabled() ) + { + filteredVersions.removeVersion( version ); + } + } + + return filteredVersions; + } + private void invalidMetadata( RepositorySystemSession session, RequestTrace trace, Metadata metadata, ArtifactRepository repository, Exception exception ) {