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

gnodet pushed a commit to branch maven-3.9.x
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/maven-3.9.x by this push:
     new 5136a5ea8 Maven-3.9.x Simplify maven-plugin metadata handling (#807)
5136a5ea8 is described below

commit 5136a5ea81f3db5ef38b75eb1b987b60fdf5f336
Author: Tamas Cservenak <[email protected]>
AuthorDate: Tue Oct 11 14:11:34 2022 +0200

    Maven-3.9.x Simplify maven-plugin metadata handling (#807)
---
 .../DefaultPluginsMetadataInfoProvider.java        | 137 ---------------------
 .../repository/internal/LocalSnapshotMetadata.java |   2 +-
 .../internal/LocalSnapshotMetadataGenerator.java   |   6 +-
 .../maven/repository/internal/PluginsMetadata.java |  41 +++---
 .../internal/PluginsMetadataGenerator.java         |  91 ++++++++++----
 .../internal/PluginsMetadataGeneratorFactory.java  |  20 +--
 .../internal/PluginsMetadataInfoProvider.java      |  47 -------
 .../internal/RemoteSnapshotMetadata.java           |   2 +-
 .../internal/RemoteSnapshotMetadataGenerator.java  |   6 +-
 .../internal/SnapshotMetadataGeneratorFactory.java |  10 +-
 .../repository/internal/VersionsMetadata.java      |   2 +-
 .../internal/VersionsMetadataGenerator.java        |   4 +-
 .../internal/VersionsMetadataGeneratorFactory.java |  10 +-
 13 files changed, 123 insertions(+), 255 deletions(-)

diff --git 
a/maven-core/src/main/java/org/apache/maven/execution/infoproviders/DefaultPluginsMetadataInfoProvider.java
 
b/maven-core/src/main/java/org/apache/maven/execution/infoproviders/DefaultPluginsMetadataInfoProvider.java
deleted file mode 100644
index 616a3a88a..000000000
--- 
a/maven-core/src/main/java/org/apache/maven/execution/infoproviders/DefaultPluginsMetadataInfoProvider.java
+++ /dev/null
@@ -1,137 +0,0 @@
-package org.apache.maven.execution.infoproviders;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.Objects;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Provider;
-import javax.inject.Singleton;
-
-import org.apache.maven.artifact.repository.metadata.Metadata;
-import org.apache.maven.artifact.repository.metadata.Plugin;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
-import org.apache.maven.execution.MavenSession;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.repository.internal.PluginsMetadataInfoProvider;
-import org.apache.maven.repository.legacy.metadata.ArtifactMetadata;
-import org.eclipse.aether.artifact.Artifact;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * Default implementation of {@link PluginsMetadataInfoProvider}.
- */
-@Named
-@Singleton
-public class DefaultPluginsMetadataInfoProvider
-    implements PluginsMetadataInfoProvider
-{
-    private final Provider<MavenSession> mavenSessionProvider;
-
-    @Inject
-    public DefaultPluginsMetadataInfoProvider( final Provider<MavenSession> 
mavenSessionProvider )
-    {
-        this.mavenSessionProvider = requireNonNull( mavenSessionProvider );
-    }
-
-    @Override
-    public PluginInfo getPluginInfo( final Artifact artifact )
-    {
-        MavenSession mavenSession = mavenSessionProvider.get();
-        if ( mavenSession != null )
-        {
-            MavenProject mavenProject = searchForProject( mavenSession, 
artifact );
-            if ( mavenProject != null && "maven-plugin".equals( 
mavenProject.getPackaging() ) )
-            {
-                Plugin plugin = searchForPluginGroupLevelRepositoryMetadata( 
mavenProject );
-
-                if ( plugin != null )
-                {
-                    return new PluginInfo()
-                    {
-                        @Override
-                        public String getPluginGroupId()
-                        {
-                            return artifact.getGroupId();
-                        }
-
-                        @Override
-                        public String getPluginArtifactId()
-                        {
-                            return artifact.getArtifactId();
-                        }
-
-                        @Override
-                        public String getPluginPrefix()
-                        {
-                            return plugin.getPrefix();
-                        }
-
-                        @Override
-                        public String getPluginName()
-                        {
-                            return plugin.getName();
-                        }
-                    };
-                }
-            }
-        }
-
-        return null;
-    }
-
-    private MavenProject searchForProject( MavenSession mavenSession, Artifact 
artifact )
-    {
-        for ( MavenProject mavenProject : mavenSession.getProjects() )
-        {
-            if ( mavenProject.getArtifact() != null
-                && Objects.equals( mavenProject.getGroupId(), 
artifact.getGroupId() )
-                && Objects.equals( mavenProject.getArtifactId(), 
artifact.getArtifactId() ) )
-            {
-                return mavenProject;
-            }
-        }
-        return null;
-    }
-
-    private Plugin searchForPluginGroupLevelRepositoryMetadata( MavenProject 
mavenProject )
-    {
-        org.apache.maven.artifact.Artifact projectArtifact = 
mavenProject.getArtifact();
-        for ( ArtifactMetadata artifactMetadata : 
projectArtifact.getMetadataList() )
-        {
-            if ( artifactMetadata instanceof RepositoryMetadata )
-            {
-                RepositoryMetadata repositoryMetadata = (RepositoryMetadata) 
artifactMetadata;
-                Metadata metadata = repositoryMetadata.getMetadata();
-
-                for ( Plugin plugin : metadata.getPlugins() )
-                {
-                    if ( Objects.equals( plugin.getArtifactId(), 
mavenProject.getArtifactId() ) )
-                    {
-                        return plugin;
-                    }
-                }
-            }
-        }
-        return null;
-    }
-}
diff --git 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java
 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java
index 453e4d2be..d2bc84a8e 100644
--- 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java
+++ 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java
@@ -33,7 +33,7 @@ import 
org.apache.maven.artifact.repository.metadata.Versioning;
 import org.eclipse.aether.artifact.Artifact;
 
 /**
- * @author Benjamin Bentmann
+ * Maven local GAV level metadata.
  */
 final class LocalSnapshotMetadata
     extends MavenMetadata
diff --git 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java
 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java
index 75b4e6b93..3e2503c30 100644
--- 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java
+++ 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java
@@ -33,10 +33,12 @@ import org.eclipse.aether.metadata.Metadata;
 import org.eclipse.aether.util.ConfigUtils;
 
 /**
- * @author Benjamin Bentmann
+ * Maven local GAV level metadata generator.
+ * <p>
+ * Local snapshot metadata contains non-transformed snapshot version.
  */
 class LocalSnapshotMetadataGenerator
-    implements MetadataGenerator
+        implements MetadataGenerator
 {
 
     private Map<Object, LocalSnapshotMetadata> snapshots;
diff --git 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadata.java
 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadata.java
index 7a6c45abf..4c32b2df9 100644
--- 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadata.java
+++ 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadata.java
@@ -27,15 +27,32 @@ import java.util.List;
 
 import org.apache.maven.artifact.repository.metadata.Metadata;
 import org.apache.maven.artifact.repository.metadata.Plugin;
-import 
org.apache.maven.repository.internal.PluginsMetadataInfoProvider.PluginInfo;
-import org.eclipse.aether.artifact.Artifact;
 
 /**
- * Plugin G level metadata.
+ * Maven G level metadata.
  */
 final class PluginsMetadata
     extends MavenMetadata
 {
+    static final class PluginInfo
+    {
+        final String groupId;
+
+        private final String artifactId;
+
+        private final String goalPrefix;
+
+        private final String name;
+
+        PluginInfo( String groupId, String artifactId, String goalPrefix, 
String name )
+        {
+            this.groupId = groupId;
+            this.artifactId = artifactId;
+            this.goalPrefix = goalPrefix;
+            this.name = name;
+        }
+    }
+
     private final PluginInfo pluginInfo;
 
     PluginsMetadata( PluginInfo pluginInfo, Date timestamp )
@@ -54,9 +71,9 @@ final class PluginsMetadata
     {
         Metadata result = new Metadata();
         Plugin plugin = new Plugin();
-        plugin.setPrefix( pluginInfo.getPluginPrefix() );
-        plugin.setArtifactId( pluginInfo.getPluginArtifactId() );
-        plugin.setName( pluginInfo.getPluginName() );
+        plugin.setPrefix( pluginInfo.goalPrefix );
+        plugin.setArtifactId( pluginInfo.artifactId );
+        plugin.setName( pluginInfo.name );
         result.getPlugins().add( plugin );
         return result;
     }
@@ -75,16 +92,6 @@ final class PluginsMetadata
         }
     }
 
-    public Object getKey()
-    {
-        return getGroupId();
-    }
-
-    public static Object getKey( Artifact artifact )
-    {
-        return artifact.getGroupId();
-    }
-
     @Override
     public MavenMetadata setFile( File file )
     {
@@ -94,7 +101,7 @@ final class PluginsMetadata
     @Override
     public String getGroupId()
     {
-        return pluginInfo.getPluginGroupId();
+        return pluginInfo.groupId;
     }
 
     @Override
diff --git 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGenerator.java
 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGenerator.java
index 4f3556865..d1a954e84 100644
--- 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGenerator.java
+++ 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGenerator.java
@@ -19,14 +19,22 @@ package org.apache.maven.repository.internal;
  * under the License.
  */
 
+import java.io.Reader;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.Map;
+import java.util.jar.JarFile;
+import java.util.zip.ZipEntry;
 
-import 
org.apache.maven.repository.internal.PluginsMetadataInfoProvider.PluginInfo;
+import org.apache.maven.repository.internal.PluginsMetadata.PluginInfo;
+import org.codehaus.plexus.util.ReaderFactory;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.artifact.Artifact;
 import org.eclipse.aether.deployment.DeployRequest;
@@ -35,42 +43,35 @@ import org.eclipse.aether.installation.InstallRequest;
 import org.eclipse.aether.metadata.Metadata;
 import org.eclipse.aether.util.ConfigUtils;
 
-import static java.util.Objects.requireNonNull;
-
 /**
- * Plugin G level metadata.
+ * Maven G level metadata generator.
+ * <p>
+ * Plugin metadata contains G level list of "prefix" to A mapping for plugins 
present under this G.
  */
 class PluginsMetadataGenerator
-    implements MetadataGenerator
+        implements MetadataGenerator
 {
-    private final PluginsMetadataInfoProvider pluginsMetadataInfoProvider;
-
-    private final Map<Object, PluginsMetadata> plugins;
+    private static final String PLUGIN_DESCRIPTOR_LOCATION = 
"META-INF/maven/plugin.xml";
 
     private final Map<Object, PluginsMetadata> processedPlugins;
 
     private final Date timestamp;
 
-    PluginsMetadataGenerator( PluginsMetadataInfoProvider 
pluginsMetadataInfoProvider,
-                              RepositorySystemSession session,
+    PluginsMetadataGenerator( RepositorySystemSession session,
                               InstallRequest request )
     {
-        this( pluginsMetadataInfoProvider, session, request.getMetadata() );
+        this( session, request.getMetadata() );
     }
 
-    PluginsMetadataGenerator( PluginsMetadataInfoProvider 
pluginsMetadataInfoProvider,
-                              RepositorySystemSession session,
+    PluginsMetadataGenerator( RepositorySystemSession session,
                               DeployRequest request )
     {
-        this( pluginsMetadataInfoProvider, session, request.getMetadata() );
+        this( session, request.getMetadata() );
     }
 
-    private PluginsMetadataGenerator( PluginsMetadataInfoProvider 
pluginsMetadataInfoProvider,
-                                      RepositorySystemSession session,
+    private PluginsMetadataGenerator( RepositorySystemSession session,
                                       Collection<? extends Metadata> metadatas 
)
     {
-        this.pluginsMetadataInfoProvider = requireNonNull( 
pluginsMetadataInfoProvider );
-        this.plugins = new LinkedHashMap<>();
         this.processedPlugins = new LinkedHashMap<>();
         this.timestamp = (Date) ConfigUtils.getObject( session, new Date(), 
"maven.startTime" );
 
@@ -86,8 +87,8 @@ class PluginsMetadataGenerator
             if ( metadata instanceof PluginsMetadata )
             {
                 it.remove();
-                PluginsMetadata pluginMetadata = ( PluginsMetadata ) metadata;
-                processedPlugins.put( pluginMetadata.getKey(), pluginMetadata 
);
+                PluginsMetadata pluginMetadata = (PluginsMetadata) metadata;
+                processedPlugins.put( pluginMetadata.getGroupId(), 
pluginMetadata );
             }
         }
     }
@@ -107,12 +108,13 @@ class PluginsMetadataGenerator
     @Override
     public Collection<? extends Metadata> finish( Collection<? extends 
Artifact> artifacts )
     {
+        LinkedHashMap<String, PluginsMetadata> plugins = new LinkedHashMap<>();
         for ( Artifact artifact : artifacts )
         {
-            PluginInfo pluginInfo = pluginsMetadataInfoProvider.getPluginInfo( 
artifact );
+            PluginInfo pluginInfo = extractPluginInfo( artifact );
             if ( pluginInfo != null )
             {
-                Object key = PluginsMetadata.getKey( artifact );
+                String key = pluginInfo.groupId;
                 if ( processedPlugins.get( key ) == null )
                 {
                     PluginsMetadata pluginMetadata = plugins.get( key );
@@ -124,7 +126,50 @@ class PluginsMetadataGenerator
                 }
             }
         }
-
         return plugins.values();
     }
+
+    private PluginInfo extractPluginInfo( Artifact artifact )
+    {
+        // sanity: jar, no classifier and file exists
+        if ( artifact != null
+                && "jar".equals( artifact.getExtension() )
+                && "".equals( artifact.getClassifier() )
+                && artifact.getFile() != null )
+        {
+            Path artifactPath = artifact.getFile().toPath();
+            if ( Files.isRegularFile( artifactPath ) )
+            {
+                try ( JarFile artifactJar = new JarFile( 
artifactPath.toFile(), false ) )
+                {
+                    ZipEntry pluginDescriptorEntry = artifactJar.getEntry( 
PLUGIN_DESCRIPTOR_LOCATION );
+
+                    if ( pluginDescriptorEntry != null )
+                    {
+                        try ( Reader reader = ReaderFactory.newXmlReader(
+                                artifactJar.getInputStream( 
pluginDescriptorEntry ) ) )
+                        {
+                            // Note: using DOM instead of use of
+                            // 
org.apache.maven.plugin.descriptor.PluginDescriptor
+                            // as it would pull in dependency on:
+                            // - maven-plugin-api (for model)
+                            // - Plexus Container (for model supporting 
classes and exceptions)
+                            Xpp3Dom root = Xpp3DomBuilder.build( reader );
+                            String groupId = root.getChild( "groupId" 
).getValue();
+                            String artifactId = root.getChild( "artifactId" 
).getValue();
+                            String goalPrefix = root.getChild( "goalPrefix" 
).getValue();
+                            String name = root.getChild( "name" ).getValue();
+                            return new PluginInfo( groupId, artifactId, 
goalPrefix, name );
+                        }
+
+                    }
+                }
+                catch ( Exception e )
+                {
+                    // here we can have: IO. ZIP or Plexus Conf Ex: but we 
should not interfere with user intent
+                }
+            }
+        }
+        return null;
+    }
 }
diff --git 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGeneratorFactory.java
 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGeneratorFactory.java
index 19d499b25..91bdfa887 100644
--- 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGeneratorFactory.java
+++ 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGeneratorFactory.java
@@ -19,7 +19,6 @@ package org.apache.maven.repository.internal;
  * under the License.
  */
 
-import javax.inject.Inject;
 import javax.inject.Named;
 import javax.inject.Singleton;
 
@@ -29,39 +28,30 @@ import org.eclipse.aether.impl.MetadataGenerator;
 import org.eclipse.aether.impl.MetadataGeneratorFactory;
 import org.eclipse.aether.installation.InstallRequest;
 
-import static java.util.Objects.requireNonNull;
-
 /**
- * Plugin G level metadata.
+ * Maven G level metadata generator factory.
  */
 @Named( "plugins" )
 @Singleton
 public class PluginsMetadataGeneratorFactory
     implements MetadataGeneratorFactory
 {
-    private final PluginsMetadataInfoProvider pluginsMetadataInfoProvider;
-
-    @Inject
-    public PluginsMetadataGeneratorFactory( PluginsMetadataInfoProvider 
pluginsMetadataInfoProvider )
-    {
-        this.pluginsMetadataInfoProvider = requireNonNull( 
pluginsMetadataInfoProvider );
-    }
-
     @Override
     public MetadataGenerator newInstance( RepositorySystemSession session, 
InstallRequest request )
     {
-        return new PluginsMetadataGenerator( pluginsMetadataInfoProvider, 
session, request );
+        return new PluginsMetadataGenerator( session, request );
     }
 
     @Override
     public MetadataGenerator newInstance( RepositorySystemSession session, 
DeployRequest request )
     {
-        return new PluginsMetadataGenerator( pluginsMetadataInfoProvider, 
session, request );
+        return new PluginsMetadataGenerator( session, request );
     }
 
+    @SuppressWarnings( "checkstyle:magicnumber" )
     @Override
     public float getPriority()
     {
-        return 5;
+        return 10; // G level MD should be deployed as 3rd MD
     }
 }
diff --git 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataInfoProvider.java
 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataInfoProvider.java
deleted file mode 100644
index 806fa4634..000000000
--- 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataInfoProvider.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.apache.maven.repository.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.eclipse.aether.artifact.Artifact;
-
-/**
- * Plugin G level metadata provider.
- */
-public interface PluginsMetadataInfoProvider
-{
-    /**
-     * The required data for G level metadata.
-     */
-    interface PluginInfo
-    {
-        String getPluginGroupId();
-
-        String getPluginArtifactId();
-
-        String getPluginPrefix();
-
-        String getPluginName();
-    }
-
-    /**
-     * Returns {@link PluginInfo} corresponding for passed in {@link 
Artifact}, or {@code null}.
-     */
-    PluginInfo getPluginInfo( Artifact artifact );
-}
diff --git 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java
 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java
index d9b56166a..f59b03a7e 100644
--- 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java
+++ 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java
@@ -36,7 +36,7 @@ import 
org.apache.maven.artifact.repository.metadata.Versioning;
 import org.eclipse.aether.artifact.Artifact;
 
 /**
- * @author Benjamin Bentmann
+ * Maven remote GAV level metadata.
  */
 final class RemoteSnapshotMetadata
     extends MavenSnapshotMetadata
diff --git 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java
 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java
index 2e42bee7d..6211cec67 100644
--- 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java
+++ 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java
@@ -33,10 +33,12 @@ import org.eclipse.aether.metadata.Metadata;
 import org.eclipse.aether.util.ConfigUtils;
 
 /**
- * @author Benjamin Bentmann
+ * Maven remote GAV level metadata generator.
+ * <p>
+ * Remote snapshot metadata converts artifact on-the-fly to use timestamped 
snapshot version, and enlist it accordingly.
  */
 class RemoteSnapshotMetadataGenerator
-    implements MetadataGenerator
+        implements MetadataGenerator
 {
 
     private final Map<Object, RemoteSnapshotMetadata> snapshots;
diff --git 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java
 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java
index ba6dadf1b..6d7304121 100644
--- 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java
+++ 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java
@@ -29,27 +29,29 @@ import org.eclipse.aether.impl.MetadataGeneratorFactory;
 import org.eclipse.aether.installation.InstallRequest;
 
 /**
- * @author Benjamin Bentmann
+ * Maven GAV level metadata generator factory.
  */
 @Named( "snapshot" )
 @Singleton
 public class SnapshotMetadataGeneratorFactory
     implements MetadataGeneratorFactory
 {
-
+    @Override
     public MetadataGenerator newInstance( RepositorySystemSession session, 
InstallRequest request )
     {
         return new LocalSnapshotMetadataGenerator( session, request );
     }
 
+    @Override
     public MetadataGenerator newInstance( RepositorySystemSession session, 
DeployRequest request )
     {
         return new RemoteSnapshotMetadataGenerator( session, request );
     }
 
+    @SuppressWarnings( "checkstyle:magicnumber" )
+    @Override
     public float getPriority()
     {
-        return 10;
+        return 30; // GAV level metadata should be deployed 1st MD
     }
-
 }
diff --git 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java
 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java
index 5103e5cae..a669933c6 100644
--- 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java
+++ 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java
@@ -31,7 +31,7 @@ import org.eclipse.aether.artifact.Artifact;
 import org.eclipse.aether.artifact.ArtifactProperties;
 
 /**
- * @author Benjamin Bentmann
+ * Maven GA level metadata.
  */
 final class VersionsMetadata
     extends MavenMetadata
diff --git 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java
 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java
index 409eec422..ec5c013cb 100644
--- 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java
+++ 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java
@@ -35,7 +35,9 @@ import org.eclipse.aether.metadata.Metadata;
 import org.eclipse.aether.util.ConfigUtils;
 
 /**
- * @author Benjamin Bentmann
+ * Maven GA level metadata generator.
+ *
+ * Version metadata contains list of existing baseVersions within this GA.
  */
 class VersionsMetadataGenerator
     implements MetadataGenerator
diff --git 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java
 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java
index eae836ab8..bf0d62bf8 100644
--- 
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java
+++ 
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java
@@ -29,27 +29,29 @@ import org.eclipse.aether.impl.MetadataGeneratorFactory;
 import org.eclipse.aether.installation.InstallRequest;
 
 /**
- * @author Benjamin Bentmann
+ * Maven GA level metadata generator factory.
  */
 @Named( "versions" )
 @Singleton
 public class VersionsMetadataGeneratorFactory
     implements MetadataGeneratorFactory
 {
-
+    @Override
     public MetadataGenerator newInstance( RepositorySystemSession session, 
InstallRequest request )
     {
         return new VersionsMetadataGenerator( session, request );
     }
 
+    @Override
     public MetadataGenerator newInstance( RepositorySystemSession session, 
DeployRequest request )
     {
         return new VersionsMetadataGenerator( session, request );
     }
 
+    @SuppressWarnings( "checkstyle:magicnumber" )
+    @Override
     public float getPriority()
     {
-        return 5;
+        return 20; // GA level metadata should be deployed 2nd MD
     }
-
 }

Reply via email to