mirror of
https://github.com/apache/maven.git
synced 2025-03-06 16:49:27 +00:00
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.
This commit is contained in:
parent
ce4579108d
commit
e410a6ce1d
@ -19,6 +19,7 @@
|
||||
* 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 @@ private Map<String, ArtifactRepository> getVersions( RepositorySystemSession ses
|
||||
}
|
||||
|
||||
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 @@ private Map<String, ArtifactRepository> getVersions( RepositorySystemSession ses
|
||||
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 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t
|
||||
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 )
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user