This is an automated email from the ASF dual-hosted git repository.
gnodet 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 6fddd97513 Use the new resolver provider (#1483)
6fddd97513 is described below
commit 6fddd975137a91a21c6a8b19a935f62c01a98f09
Author: Guillaume Nodet <[email protected]>
AuthorDate: Thu Apr 25 16:13:36 2024 +0200
Use the new resolver provider (#1483)
---
...SchemeProvider.java => MavenVersionScheme.java} | 25 +++-
.../maven/internal/impl/standalone/ApiRunner.java | 4 +-
.../apache/maven/project/TestProjectBuilder.java | 3 -
.../DefaultRepositorySystemSessionFactory.java | 2 +-
.../maven/internal/impl/DefaultTypeRegistry.java | 2 +-
.../maven/internal/impl/SisuDiBridgeModule.java | 163 +++++----------------
.../impl/DefaultConsumerPomBuilder.java | 6 +-
.../plugin/internal/DefaultMavenPluginManager.java | 4 +-
.../internal/PluginDependenciesResolver.java | 9 ++
.../maven/project/DefaultProjectBuilder.java | 4 -
.../apache/maven/project/ProjectModelResolver.java | 6 +-
.../META-INF/maven/org.apache.maven.api.di.Inject | 69 +++++++++
.../org/apache/maven/internal/impl/TestApi.java | 10 ++
.../org/apache/maven/di/impl/InjectorImpl.java | 4 +
maven-resolver-provider/pom.xml | 4 -
.../resources/META-INF/sisu/javax.inject.Named | 12 ++
16 files changed, 176 insertions(+), 151 deletions(-)
diff --git
a/maven-api-impl/src/main/java/org/apache/maven/internal/impl/resolver/DefaultVersionSchemeProvider.java
b/maven-api-impl/src/main/java/org/apache/maven/internal/impl/resolver/MavenVersionScheme.java
similarity index 57%
rename from
maven-api-impl/src/main/java/org/apache/maven/internal/impl/resolver/DefaultVersionSchemeProvider.java
rename to
maven-api-impl/src/main/java/org/apache/maven/internal/impl/resolver/MavenVersionScheme.java
index 08ef64703e..c146905892 100644
---
a/maven-api-impl/src/main/java/org/apache/maven/internal/impl/resolver/DefaultVersionSchemeProvider.java
+++
b/maven-api-impl/src/main/java/org/apache/maven/internal/impl/resolver/MavenVersionScheme.java
@@ -19,9 +19,12 @@
package org.apache.maven.internal.impl.resolver;
import org.apache.maven.api.di.Named;
-import org.apache.maven.api.di.Provides;
import org.apache.maven.api.di.Singleton;
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;
/**
@@ -29,10 +32,22 @@ import org.eclipse.aether.version.VersionScheme;
*/
@Singleton
@Named
-public final class DefaultVersionSchemeProvider {
+public class MavenVersionScheme implements VersionScheme {
- @Provides
- static VersionScheme getVersionScheme() {
- return new GenericVersionScheme();
+ private final VersionScheme delegate = new GenericVersionScheme();
+
+ @Override
+ public Version parseVersion(String version) throws
InvalidVersionSpecificationException {
+ return delegate.parseVersion(version);
+ }
+
+ @Override
+ public VersionRange parseVersionRange(String range) throws
InvalidVersionSpecificationException {
+ return delegate.parseVersionRange(range);
+ }
+
+ @Override
+ public VersionConstraint parseVersionConstraint(String constraint) throws
InvalidVersionSpecificationException {
+ return delegate.parseVersionConstraint(constraint);
}
}
diff --git
a/maven-api-impl/src/test/java/org/apache/maven/internal/impl/standalone/ApiRunner.java
b/maven-api-impl/src/test/java/org/apache/maven/internal/impl/standalone/ApiRunner.java
index 08c80cef4c..147970d564 100644
---
a/maven-api-impl/src/test/java/org/apache/maven/internal/impl/standalone/ApiRunner.java
+++
b/maven-api-impl/src/test/java/org/apache/maven/internal/impl/standalone/ApiRunner.java
@@ -61,7 +61,7 @@ import org.apache.maven.internal.impl.*;
import org.apache.maven.internal.impl.model.*;
import org.apache.maven.internal.impl.resolver.DefaultVersionRangeResolver;
import org.apache.maven.internal.impl.resolver.DefaultVersionResolver;
-import org.apache.maven.internal.impl.resolver.DefaultVersionSchemeProvider;
+import org.apache.maven.internal.impl.resolver.MavenVersionScheme;
import org.apache.maven.internal.impl.resolver.type.DefaultTypeProvider;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystem;
@@ -104,7 +104,7 @@ public class ApiRunner {
injector.bindImplicit(ExtensibleEnumRegistries.class);
injector.bindImplicit(DefaultTypeProvider.class);
- injector.bindImplicit(DefaultVersionSchemeProvider.class);
+ injector.bindImplicit(MavenVersionScheme.class);
injector.bindImplicit(BuildModelTransformer.class);
injector.bindImplicit(DefaultDependencyManagementImporter.class);
injector.bindImplicit(DefaultDependencyManagementInjector.class);
diff --git
a/maven-compat/src/test/java/org/apache/maven/project/TestProjectBuilder.java
b/maven-compat/src/test/java/org/apache/maven/project/TestProjectBuilder.java
index 1907d53f28..cfda6e1cac 100644
---
a/maven-compat/src/test/java/org/apache/maven/project/TestProjectBuilder.java
+++
b/maven-compat/src/test/java/org/apache/maven/project/TestProjectBuilder.java
@@ -30,7 +30,6 @@ import org.apache.maven.api.services.model.ModelProcessor;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.bridge.MavenRepositorySystem;
import org.apache.maven.model.root.RootLocator;
-import org.apache.maven.repository.internal.ModelCacheFactory;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.impl.RemoteRepositoryManager;
@@ -47,7 +46,6 @@ public class TestProjectBuilder extends DefaultProjectBuilder
{
RepositorySystem repoSystem,
RemoteRepositoryManager repositoryManager,
ProjectDependenciesResolver dependencyResolver,
- ModelCacheFactory modelCacheFactory,
RootLocator rootLocator) {
super(
modelBuilder,
@@ -57,7 +55,6 @@ public class TestProjectBuilder extends DefaultProjectBuilder
{
repoSystem,
repositoryManager,
dependencyResolver,
- modelCacheFactory,
rootLocator);
}
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
b/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
index bd4c074e0a..8b9f1bcbeb 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
@@ -37,10 +37,10 @@ import org.apache.maven.api.services.TypeRegistry;
import org.apache.maven.api.xml.XmlNode;
import org.apache.maven.eventspy.internal.EventSpyDispatcher;
import org.apache.maven.execution.MavenExecutionRequest;
+import org.apache.maven.internal.impl.resolver.MavenSessionBuilderSupplier;
import org.apache.maven.internal.xml.XmlNodeImpl;
import org.apache.maven.internal.xml.XmlPlexusConfiguration;
import org.apache.maven.model.ModelBase;
-import org.apache.maven.repository.internal.MavenSessionBuilderSupplier;
import org.apache.maven.resolver.RepositorySystemSessionFactory;
import org.apache.maven.rtinfo.RuntimeInformation;
import org.apache.maven.settings.Mirror;
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultTypeRegistry.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultTypeRegistry.java
index edc8c30103..fa5aa9d461 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultTypeRegistry.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultTypeRegistry.java
@@ -38,7 +38,7 @@ import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.handler.manager.LegacyArtifactHandlerManager;
import org.apache.maven.eventspy.AbstractEventSpy;
import org.apache.maven.execution.ExecutionEvent;
-import org.apache.maven.repository.internal.type.DefaultType;
+import org.apache.maven.internal.impl.resolver.type.DefaultType;
import static java.util.function.Function.identity;
import static org.apache.maven.internal.impl.Utils.nonNull;
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/SisuDiBridgeModule.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/SisuDiBridgeModule.java
index 2a5482ffdb..ed569ba420 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/SisuDiBridgeModule.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/SisuDiBridgeModule.java
@@ -21,9 +21,13 @@ package org.apache.maven.internal.impl;
import javax.inject.Named;
import javax.inject.Provider;
+import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.annotation.Annotation;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;
@@ -33,51 +37,17 @@ import java.util.Map;
import java.util.Set;
import java.util.function.Supplier;
import java.util.stream.Collectors;
-import java.util.stream.Stream;
import com.google.inject.AbstractModule;
+import com.google.inject.binder.AnnotatedBindingBuilder;
+import com.google.inject.name.Names;
import org.apache.maven.api.services.MavenException;
-import org.apache.maven.api.services.model.ProfileActivator;
-import org.apache.maven.api.spi.LanguageProvider;
-import org.apache.maven.api.spi.LifecycleProvider;
-import org.apache.maven.api.spi.ModelParser;
-import org.apache.maven.api.spi.PackagingProvider;
import org.apache.maven.di.Injector;
import org.apache.maven.di.Key;
import org.apache.maven.di.impl.Binding;
import org.apache.maven.di.impl.DIException;
import org.apache.maven.di.impl.InjectorImpl;
-import org.apache.maven.internal.aether.DefaultRepositorySystemSessionFactory;
-import org.apache.maven.internal.aether.LegacyRepositorySystemSessionExtender;
-import org.apache.maven.internal.impl.model.BuildModelTransformer;
-import
org.apache.maven.internal.impl.model.DefaultDependencyManagementImporter;
-import
org.apache.maven.internal.impl.model.DefaultDependencyManagementInjector;
-import org.apache.maven.internal.impl.model.DefaultInheritanceAssembler;
-import org.apache.maven.internal.impl.model.DefaultLifecycleBindingsInjector;
-import org.apache.maven.internal.impl.model.DefaultModelBuilder;
-import org.apache.maven.internal.impl.model.DefaultModelInterpolator;
-import org.apache.maven.internal.impl.model.DefaultModelNormalizer;
-import org.apache.maven.internal.impl.model.DefaultModelPathTranslator;
-import org.apache.maven.internal.impl.model.DefaultModelProcessor;
-import org.apache.maven.internal.impl.model.DefaultModelValidator;
-import org.apache.maven.internal.impl.model.DefaultModelVersionProcessor;
-import org.apache.maven.internal.impl.model.DefaultPathTranslator;
-import org.apache.maven.internal.impl.model.DefaultPluginManagementInjector;
-import org.apache.maven.internal.impl.model.DefaultProfileInjector;
-import org.apache.maven.internal.impl.model.DefaultProfileSelector;
-import org.apache.maven.internal.impl.model.DefaultRootLocator;
-import
org.apache.maven.internal.impl.model.ProfileActivationFilePathInterpolator;
-import org.apache.maven.internal.impl.model.profile.FileProfileActivator;
-import org.apache.maven.internal.impl.model.profile.JdkVersionProfileActivator;
-import
org.apache.maven.internal.impl.model.profile.OperatingSystemProfileActivator;
-import org.apache.maven.internal.impl.model.profile.PackagingProfileActivator;
-import org.apache.maven.internal.impl.model.profile.PropertyProfileActivator;
-import org.apache.maven.internal.impl.resolver.DefaultArtifactDescriptorReader;
-import org.apache.maven.internal.impl.resolver.DefaultVersionSchemeProvider;
-import
org.apache.maven.internal.impl.resolver.relocation.DistributionManagementArtifactRelocationSource;
-import
org.apache.maven.internal.impl.resolver.relocation.UserPropertiesArtifactRelocationSource;
import org.codehaus.plexus.PlexusContainer;
-import org.eclipse.aether.version.VersionScheme;
@Named
class SisuDiBridgeModule extends AbstractModule {
@@ -86,7 +56,7 @@ class SisuDiBridgeModule extends AbstractModule {
protected void configure() {
Provider<PlexusContainer> containerProvider =
getProvider(PlexusContainer.class);
- Injector injector = new InjectorImpl() {
+ InjectorImpl injector = new InjectorImpl() {
@Override
public <Q> Supplier<Q> getCompiledBinding(Key<Q> key) {
Set<Binding<Q>> res = getBindings(key);
@@ -163,23 +133,21 @@ class SisuDiBridgeModule extends AbstractModule {
.asIterator();
it.hasNext(); ) {
URL url = it.next();
- try (InputStream is = url.openStream()) {
- String[] lines = new String(is.readAllBytes()).split("\n");
- for (String className : lines) {
- try {
- Class<?> clazz = classLoader.loadClass(className);
- injector.bindImplicit(clazz);
- Class<Object> itf = (Class)
- (clazz.isInterface()
- ? clazz
- : clazz.getInterfaces().length > 0
? clazz.getInterfaces()[0] : null);
- if (itf != null) {
- bind(itf).toProvider(() ->
injector.getInstance(clazz));
- }
- } catch (ClassNotFoundException e) {
- // ignore
- e.printStackTrace();
- }
+ List<String> lines;
+ try (InputStream is = url.openStream();
+ BufferedReader reader = new BufferedReader(new
InputStreamReader(is, StandardCharsets.UTF_8))) {
+ lines = reader.lines()
+ .map(String::trim)
+ .filter(s -> !s.isEmpty() && !s.startsWith("#"))
+ .toList();
+ }
+ for (String className : lines) {
+ try {
+ Class<?> clazz = classLoader.loadClass(className);
+ injector.bindImplicit(clazz);
+ } catch (ClassNotFoundException e) {
+ // ignore
+ e.printStackTrace();
}
}
}
@@ -187,78 +155,23 @@ class SisuDiBridgeModule extends AbstractModule {
} catch (IOException e) {
throw new MavenException(e);
}
- Stream.of(
- LanguageProvider.class,
- LifecycleProvider.class,
- PackagingProvider.class,
- DefaultArtifactCoordinateFactory.class,
- DefaultArtifactDeployer.class,
- DefaultArtifactFactory.class,
- DefaultArtifactInstaller.class,
- DefaultArtifactResolver.class,
- DefaultChecksumAlgorithmService.class,
- DefaultDependencyCollector.class,
- DefaultDependencyCoordinateFactory.class,
- DefaultLocalRepositoryManager.class,
- DefaultMessageBuilderFactory.class,
- DefaultModelXmlFactory.class,
- DefaultRepositoryFactory.class,
- DefaultSettingsBuilder.class,
- DefaultSettingsXmlFactory.class,
- DefaultToolchainsBuilder.class,
- DefaultToolchainsXmlFactory.class,
- DefaultTransportProvider.class,
- DefaultVersionParser.class,
- DefaultVersionRangeResolver.class,
- DefaultVersionResolver.class,
- DefaultVersionSchemeProvider.class,
- VersionScheme.class,
- DefaultModelVersionParser.class,
- DefaultRepositorySystemSessionFactory.class,
- LegacyRepositorySystemSessionExtender.class,
- ExtensibleEnumRegistries.DefaultLanguageRegistry.class,
-
ExtensibleEnumRegistries.DefaultPathScopeRegistry.class,
-
ExtensibleEnumRegistries.DefaultProjectScopeRegistry.class,
- DefaultModelBuilder.class,
- DefaultModelProcessor.class,
- ModelParser.class,
- DefaultModelValidator.class,
- DefaultModelVersionProcessor.class,
- DefaultModelNormalizer.class,
- DefaultModelInterpolator.class,
- DefaultPathTranslator.class,
- DefaultUrlNormalizer.class,
- DefaultRootLocator.class,
- DefaultModelPathTranslator.class,
- DefaultModelUrlNormalizer.class,
- DefaultSuperPomProvider.class,
- DefaultInheritanceAssembler.class,
- DefaultProfileSelector.class,
- ProfileActivator.class,
- DefaultProfileInjector.class,
- DefaultPluginManagementInjector.class,
- DefaultDependencyManagementInjector.class,
- DefaultDependencyManagementImporter.class,
- DefaultLifecycleBindingsInjector.class,
- DefaultPluginConfigurationExpander.class,
- ProfileActivationFilePathInterpolator.class,
- BuildModelTransformer.class,
- DefaultArtifactDescriptorReader.class,
- DistributionManagementArtifactRelocationSource.class,
- UserPropertiesArtifactRelocationSource.class,
- FileProfileActivator.class,
- JdkVersionProfileActivator.class,
- OperatingSystemProfileActivator.class,
- PackagingProfileActivator.class,
- PropertyProfileActivator.class)
- .forEach((Class<?> clazz) -> {
- injector.bindImplicit(clazz);
- Class<Object> itf = (Class)
- (clazz.isInterface()
- ? null
- : clazz.getInterfaces().length > 0 ?
clazz.getInterfaces()[0] : null);
+ injector.getBindings().keySet().stream()
+ .filter(k -> k.getQualifier() != null)
+ .sorted(Comparator.comparing(k -> k.getRawType().getName()))
+ .distinct()
+ .forEach(key -> {
+ Class<?> clazz = key.getRawType();
+ Class<Object> itf = (clazz.isInterface()
+ ? null
+ : (Class<Object>) (clazz.getInterfaces().length >
0 ? clazz.getInterfaces()[0] : clazz));
if (itf != null) {
- bind(itf).toProvider(() ->
injector.getInstance(clazz));
+ AnnotatedBindingBuilder<Object> binder = bind(itf);
+ if (key.getQualifier() instanceof String s) {
+ binder.annotatedWith(Names.named(s));
+ } else if (key.getQualifier() instanceof Annotation a)
{
+ binder.annotatedWith(a);
+ }
+ binder.toProvider(() -> injector.getInstance(clazz));
}
});
}
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java
b/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java
index 0fb21459cf..c551dc4ae1 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java
@@ -61,6 +61,7 @@ import org.apache.maven.api.services.model.ProfileSelector;
import org.apache.maven.internal.impl.InternalSession;
import org.apache.maven.internal.impl.model.DefaultModelBuilder;
import org.apache.maven.internal.impl.model.DefaultProfileSelector;
+import
org.apache.maven.internal.impl.model.ProfileActivationFilePathInterpolator;
import org.apache.maven.internal.impl.resolver.DefaultModelResolver;
import org.apache.maven.model.v4.MavenModelVersion;
import org.apache.maven.project.MavenProject;
@@ -129,6 +130,9 @@ class DefaultConsumerPomBuilder implements
ConsumerPomBuilder {
@Inject
private RemoteRepositoryManager remoteRepositoryManager;
+ @Inject
+ private ProfileActivationFilePathInterpolator
profileActivationFilePathInterpolator;
+
@Override
public Model build(RepositorySystemSession session, MavenProject project,
Path src) throws ModelBuilderException {
Model model = project.getModel().getDelegate();
@@ -180,7 +184,7 @@ class DefaultConsumerPomBuilder implements
ConsumerPomBuilder {
dependencyManagementImporter,
lifecycleBindingsInjector,
pluginConfigurationExpander,
- null,
+ profileActivationFilePathInterpolator,
modelTransformer,
versionParser,
remoteRepositoryManager);
diff --git
a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
index ec476eb8f8..5c250082a1 100644
---
a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
+++
b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
@@ -135,7 +135,7 @@ public class DefaultMavenPluginManager implements
MavenPluginManager {
private final ClassRealmManager classRealmManager;
private final PluginDescriptorCache pluginDescriptorCache;
private final PluginRealmCache pluginRealmCache;
- private final DefaultPluginDependenciesResolver pluginDependenciesResolver;
+ private final PluginDependenciesResolver pluginDependenciesResolver;
private final ExtensionRealmCache extensionRealmCache;
private final PluginVersionResolver pluginVersionResolver;
private final PluginArtifactsCache pluginArtifactsCache;
@@ -153,7 +153,7 @@ public class DefaultMavenPluginManager implements
MavenPluginManager {
ClassRealmManager classRealmManager,
PluginDescriptorCache pluginDescriptorCache,
PluginRealmCache pluginRealmCache,
- DefaultPluginDependenciesResolver pluginDependenciesResolver,
+ PluginDependenciesResolver pluginDependenciesResolver,
ExtensionRealmCache extensionRealmCache,
PluginVersionResolver pluginVersionResolver,
PluginArtifactsCache pluginArtifactsCache,
diff --git
a/maven-core/src/main/java/org/apache/maven/plugin/internal/PluginDependenciesResolver.java
b/maven-core/src/main/java/org/apache/maven/plugin/internal/PluginDependenciesResolver.java
index 4506ebea91..deadde6a43 100644
---
a/maven-core/src/main/java/org/apache/maven/plugin/internal/PluginDependenciesResolver.java
+++
b/maven-core/src/main/java/org/apache/maven/plugin/internal/PluginDependenciesResolver.java
@@ -27,6 +27,7 @@ import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.graph.DependencyFilter;
import org.eclipse.aether.graph.DependencyNode;
import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.resolution.DependencyResult;
/**
* Assists in resolving the dependencies of a plugin.
<strong>Warning:</strong> This is an internal utility interface
@@ -68,4 +69,12 @@ public interface PluginDependenciesResolver {
List<RemoteRepository> repositories,
RepositorySystemSession session)
throws PluginResolutionException;
+
+ DependencyResult resolvePlugin(
+ Plugin plugin,
+ Artifact artifact,
+ DependencyFilter dependencyFilter,
+ List<RemoteRepository> remotePluginRepositories,
+ RepositorySystemSession repositorySession)
+ throws PluginResolutionException;
}
diff --git
a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
index eff08333f0..4e04415085 100644
---
a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
+++
b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
@@ -69,7 +69,6 @@ import org.apache.maven.model.building.ModelSource3;
import org.apache.maven.model.resolution.UnresolvableModelException;
import org.apache.maven.model.root.RootLocator;
import org.apache.maven.repository.internal.ArtifactDescriptorUtils;
-import org.apache.maven.repository.internal.ModelCacheFactory;
import org.apache.maven.utils.Os;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
@@ -100,7 +99,6 @@ public class DefaultProjectBuilder implements ProjectBuilder
{
private final org.eclipse.aether.RepositorySystem repoSystem;
private final RemoteRepositoryManager repositoryManager;
private final ProjectDependenciesResolver dependencyResolver;
- private final ModelCacheFactory modelCacheFactory;
private final RootLocator rootLocator;
@@ -114,7 +112,6 @@ public class DefaultProjectBuilder implements
ProjectBuilder {
RepositorySystem repoSystem,
RemoteRepositoryManager repositoryManager,
ProjectDependenciesResolver dependencyResolver,
- ModelCacheFactory modelCacheFactory,
RootLocator rootLocator) {
this.modelBuilder = modelBuilder;
this.modelProcessor = modelProcessor;
@@ -123,7 +120,6 @@ public class DefaultProjectBuilder implements
ProjectBuilder {
this.repoSystem = repoSystem;
this.repositoryManager = repositoryManager;
this.dependencyResolver = dependencyResolver;
- this.modelCacheFactory = modelCacheFactory;
this.rootLocator = rootLocator;
}
// ----------------------------------------------------------------------
diff --git
a/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
b/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
index 0629a537cf..69156e0e60 100644
---
a/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
+++
b/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
@@ -35,13 +35,13 @@ import org.apache.maven.api.model.Dependency;
import org.apache.maven.api.model.Model;
import org.apache.maven.api.model.Parent;
import org.apache.maven.api.model.Repository;
+import org.apache.maven.internal.impl.resolver.ArtifactDescriptorUtils;
import org.apache.maven.model.building.ArtifactModelSource;
import org.apache.maven.model.building.FileModelSource;
import org.apache.maven.model.building.ModelSource;
import org.apache.maven.model.resolution.InvalidRepositoryException;
import org.apache.maven.model.resolution.ModelResolver;
import org.apache.maven.model.resolution.UnresolvableModelException;
-import org.apache.maven.repository.internal.ArtifactDescriptorUtils;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.RequestTrace;
@@ -141,8 +141,8 @@ public class ProjectModelResolver implements ModelResolver {
removeMatchingRepository(pomRepositories, repository.getId());
}
- List<RemoteRepository> newRepositories = Collections.singletonList(
- ArtifactDescriptorUtils.toRemoteRepository(new
org.apache.maven.model.Repository(repository)));
+ List<RemoteRepository> newRepositories =
+
Collections.singletonList(ArtifactDescriptorUtils.toRemoteRepository(repository));
if
(ProjectBuildingRequest.RepositoryMerging.REQUEST_DOMINANT.equals(repositoryMerging))
{
repositories =
remoteRepositoryManager.aggregateRepositories(session, repositories,
newRepositories, true);
diff --git
a/maven-core/src/main/resources/META-INF/maven/org.apache.maven.api.di.Inject
b/maven-core/src/main/resources/META-INF/maven/org.apache.maven.api.di.Inject
new file mode 100644
index 0000000000..07598c7664
--- /dev/null
+++
b/maven-core/src/main/resources/META-INF/maven/org.apache.maven.api.di.Inject
@@ -0,0 +1,69 @@
+org.apache.maven.api.services.model.ProfileActivator
+org.apache.maven.api.spi.LanguageProvider
+org.apache.maven.api.spi.LifecycleProvider
+org.apache.maven.api.spi.ModelParser
+org.apache.maven.api.spi.PackagingProvider
+org.apache.maven.internal.aether.DefaultRepositorySystemSessionFactory
+org.apache.maven.internal.aether.LegacyRepositorySystemSessionExtender
+org.apache.maven.internal.impl.DefaultArtifactCoordinateFactory
+org.apache.maven.internal.impl.DefaultArtifactDeployer
+org.apache.maven.internal.impl.DefaultArtifactFactory
+org.apache.maven.internal.impl.DefaultArtifactInstaller
+org.apache.maven.internal.impl.DefaultArtifactResolver
+org.apache.maven.internal.impl.DefaultChecksumAlgorithmService
+org.apache.maven.internal.impl.DefaultDependencyCollector
+org.apache.maven.internal.impl.DefaultDependencyCoordinateFactory
+org.apache.maven.internal.impl.DefaultLocalRepositoryManager
+org.apache.maven.internal.impl.DefaultMessageBuilderFactory
+org.apache.maven.internal.impl.DefaultModelXmlFactory
+org.apache.maven.internal.impl.DefaultRepositoryFactory
+org.apache.maven.internal.impl.DefaultSettingsBuilder
+org.apache.maven.internal.impl.DefaultSettingsXmlFactory
+org.apache.maven.internal.impl.DefaultToolchainsBuilder
+org.apache.maven.internal.impl.DefaultToolchainsXmlFactory
+org.apache.maven.internal.impl.DefaultTransportProvider
+org.apache.maven.internal.impl.DefaultVersionParser
+org.apache.maven.internal.impl.DefaultVersionRangeResolver
+org.apache.maven.internal.impl.DefaultVersionResolver
+org.apache.maven.internal.impl.DefaultModelVersionParser
+org.apache.maven.internal.impl.DefaultUrlNormalizer
+org.apache.maven.internal.impl.DefaultModelUrlNormalizer
+org.apache.maven.internal.impl.DefaultSuperPomProvider
+org.apache.maven.internal.impl.DefaultPluginConfigurationExpander
+org.apache.maven.internal.impl.ExtensibleEnumRegistries$DefaultLanguageRegistry
+org.apache.maven.internal.impl.ExtensibleEnumRegistries$DefaultPathScopeRegistry
+org.apache.maven.internal.impl.ExtensibleEnumRegistries$DefaultProjectScopeRegistry
+org.apache.maven.internal.impl.model.DefaultModelBuilder
+org.apache.maven.internal.impl.model.DefaultModelProcessor
+org.apache.maven.internal.impl.model.DefaultModelValidator
+org.apache.maven.internal.impl.model.DefaultModelVersionProcessor
+org.apache.maven.internal.impl.model.DefaultModelNormalizer
+org.apache.maven.internal.impl.model.DefaultModelInterpolator
+org.apache.maven.internal.impl.model.DefaultPathTranslator
+org.apache.maven.internal.impl.model.DefaultRootLocator
+org.apache.maven.internal.impl.model.DefaultModelPathTranslator
+org.apache.maven.internal.impl.model.DefaultInheritanceAssembler
+org.apache.maven.internal.impl.model.DefaultProfileSelector
+org.apache.maven.internal.impl.model.DefaultProfileInjector
+org.apache.maven.internal.impl.model.DefaultPluginManagementInjector
+org.apache.maven.internal.impl.model.DefaultDependencyManagementInjector
+org.apache.maven.internal.impl.model.DefaultDependencyManagementImporter
+org.apache.maven.internal.impl.model.DefaultLifecycleBindingsInjector
+org.apache.maven.internal.impl.model.ProfileActivationFilePathInterpolator
+org.apache.maven.internal.impl.model.BuildModelTransformer
+org.apache.maven.internal.impl.model.profile.FileProfileActivator
+org.apache.maven.internal.impl.model.profile.JdkVersionProfileActivator
+org.apache.maven.internal.impl.model.profile.OperatingSystemProfileActivator
+org.apache.maven.internal.impl.model.profile.PackagingProfileActivator
+org.apache.maven.internal.impl.model.profile.PropertyProfileActivator
+org.apache.maven.internal.impl.resolver.PluginsMetadataGeneratorFactory
+org.apache.maven.internal.impl.resolver.SnapshotMetadataGeneratorFactory
+org.apache.maven.internal.impl.resolver.VersionsMetadataGeneratorFactory
+org.apache.maven.internal.impl.resolver.DefaultVersionResolver
+org.apache.maven.internal.impl.resolver.DefaultVersionRangeResolver
+org.apache.maven.internal.impl.resolver.DefaultArtifactDescriptorReader
+org.apache.maven.internal.impl.resolver.DefaultArtifactDescriptorReader
+org.apache.maven.internal.impl.resolver.MavenVersionScheme
+org.apache.maven.internal.impl.resolver.relocation.DistributionManagementArtifactRelocationSource
+org.apache.maven.internal.impl.resolver.relocation.UserPropertiesArtifactRelocationSource
+org.apache.maven.internal.impl.resolver.type.DefaultTypeProvider
\ No newline at end of file
diff --git
a/maven-core/src/test/java/org/apache/maven/internal/impl/TestApi.java
b/maven-core/src/test/java/org/apache/maven/internal/impl/TestApi.java
index 434d758466..cd71428fdb 100644
--- a/maven-core/src/test/java/org/apache/maven/internal/impl/TestApi.java
+++ b/maven-core/src/test/java/org/apache/maven/internal/impl/TestApi.java
@@ -49,9 +49,11 @@ import org.apache.maven.session.scope.internal.SessionScope;
import org.apache.maven.toolchain.DefaultToolchainManagerPrivate;
import org.apache.maven.toolchain.building.ToolchainsBuilder;
import org.codehaus.plexus.PlexusContainer;
+import
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.codehaus.plexus.testing.PlexusTest;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.impl.MetadataGeneratorFactory;
import org.eclipse.aether.repository.LocalRepository;
import org.eclipse.aether.repository.RemoteRepository;
import org.junit.jupiter.api.BeforeEach;
@@ -209,6 +211,14 @@ class TestApi {
assertEquals("plexus-1.0.11.pom",
unresolved.get(0).getFileName().toString());
}
+ @Test
+ void testMetadataGeneratorFactory() throws ComponentLookupException {
+ List<MetadataGeneratorFactory> factories =
plexusContainer.lookupList(MetadataGeneratorFactory.class);
+ assertNotNull(factories);
+ factories.forEach(f -> System.out.println(f.getClass().getName()));
+ assertEquals(3, factories.size());
+ }
+
@Test
void testProjectDependencies() {
Artifact pom = session.createArtifact("org.codehaus.plexus",
"plexus-container-default", "1.0-alpha-32", "pom");
diff --git a/maven-di/src/main/java/org/apache/maven/di/impl/InjectorImpl.java
b/maven-di/src/main/java/org/apache/maven/di/impl/InjectorImpl.java
index 6ee277da1c..142d2bae96 100644
--- a/maven-di/src/main/java/org/apache/maven/di/impl/InjectorImpl.java
+++ b/maven-di/src/main/java/org/apache/maven/di/impl/InjectorImpl.java
@@ -145,6 +145,10 @@ public class InjectorImpl implements Injector {
return bindings.keySet();
}
+ public Map<Key<?>, Set<Binding<?>>> getBindings() {
+ return bindings;
+ }
+
public <Q> Supplier<Q> getCompiledBinding(Key<Q> key) {
Set<Binding<Q>> res = getBindings(key);
if (res != null && !res.isEmpty()) {
diff --git a/maven-resolver-provider/pom.xml b/maven-resolver-provider/pom.xml
index 3b0176d9ac..a933dc66fe 100644
--- a/maven-resolver-provider/pom.xml
+++ b/maven-resolver-provider/pom.xml
@@ -155,10 +155,6 @@ under the License.
<build>
<plugins>
- <plugin>
- <groupId>org.eclipse.sisu</groupId>
- <artifactId>sisu-maven-plugin</artifactId>
- </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
diff --git
a/maven-resolver-provider/src/test/resources/META-INF/sisu/javax.inject.Named
b/maven-resolver-provider/src/test/resources/META-INF/sisu/javax.inject.Named
new file mode 100644
index 0000000000..5ecb52e02e
--- /dev/null
+++
b/maven-resolver-provider/src/test/resources/META-INF/sisu/javax.inject.Named
@@ -0,0 +1,12 @@
+org.apache.maven.repository.internal.DefaultArtifactDescriptorReader
+org.apache.maven.repository.internal.DefaultModelCacheFactory
+org.apache.maven.repository.internal.DefaultModelVersionParser
+org.apache.maven.repository.internal.DefaultVersionRangeResolver
+org.apache.maven.repository.internal.DefaultVersionResolver
+org.apache.maven.repository.internal.DefaultVersionSchemeProvider
+org.apache.maven.repository.internal.PluginsMetadataGeneratorFactory
+org.apache.maven.repository.internal.SnapshotMetadataGeneratorFactory
+org.apache.maven.repository.internal.VersionsMetadataGeneratorFactory
+org.apache.maven.repository.internal.relocation.DistributionManagementArtifactRelocationSource
+org.apache.maven.repository.internal.relocation.UserPropertiesArtifactRelocationSource
+org.apache.maven.repository.internal.type.DefaultTypeProvider