diff --git a/maven-core/pom.xml b/maven-core/pom.xml
index d530e6c40d0e..a568a3621247 100644
--- a/maven-core/pom.xml
+++ b/maven-core/pom.xml
@@ -94,10 +94,6 @@ under the License.
org.apache.maven.resolver
maven-resolver-util
-
- org.apache.maven.resolver
- maven-resolver-supplier-mvn3
-
org.eclipse.sisu
org.eclipse.sisu.plexus
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 3be3fc027830..c95177953077 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
@@ -41,6 +41,7 @@
import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.internal.RepositorySystemSessionFactory;
import org.apache.maven.model.ModelBase;
+import org.apache.maven.repository.internal.MavenSessionBuilderSupplier;
import org.apache.maven.rtinfo.RuntimeInformation;
import org.apache.maven.settings.Mirror;
import org.apache.maven.settings.Proxy;
@@ -64,7 +65,6 @@
import org.eclipse.aether.repository.RepositoryPolicy;
import org.eclipse.aether.repository.WorkspaceReader;
import org.eclipse.aether.resolution.ResolutionErrorPolicy;
-import org.eclipse.aether.supplier.SessionBuilderSupplier;
import org.eclipse.aether.util.ConfigUtils;
import org.eclipse.aether.util.graph.manager.TransitiveDependencyManager;
import org.eclipse.aether.util.listener.ChainedRepositoryListener;
@@ -234,7 +234,7 @@ public RepositorySystemSession.SessionBuilder newRepositorySessionBuilder(MavenE
configProps.putAll(request.getSystemProperties());
configProps.putAll(request.getUserProperties());
- RepositorySystemSession.SessionBuilder mainSessionBuilder = new SessionBuilderSupplier(repoSystem).get();
+ RepositorySystemSession.SessionBuilder mainSessionBuilder = new MavenSessionBuilderSupplier(repoSystem).get();
mainSessionBuilder.setCache(request.getRepositoryCache());
mainSessionBuilder.setOffline(request.isOffline());
diff --git a/maven-resolver-provider/pom.xml b/maven-resolver-provider/pom.xml
index f772ac4c6b27..18325610cb20 100644
--- a/maven-resolver-provider/pom.xml
+++ b/maven-resolver-provider/pom.xml
@@ -64,10 +64,6 @@ under the License.
org.apache.maven.resolver
maven-resolver-impl
-
- org.apache.maven.resolver
- maven-resolver-supplier-mvn3
-
org.codehaus.plexus
plexus-utils
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java
index 3a7f81de7b49..ad4a37971ca6 100644
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java
@@ -32,7 +32,6 @@
import java.util.Set;
import org.apache.maven.model.Model;
-import org.apache.maven.model.building.DefaultModelBuilderFactory;
import org.apache.maven.model.building.DefaultModelBuildingRequest;
import org.apache.maven.model.building.FileModelSource;
import org.apache.maven.model.building.ModelBuilder;
@@ -70,8 +69,6 @@
import org.eclipse.aether.resolution.VersionRequest;
import org.eclipse.aether.resolution.VersionResolutionException;
import org.eclipse.aether.resolution.VersionResult;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
import org.eclipse.aether.transfer.ArtifactNotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -81,7 +78,7 @@
*/
@Named
@Singleton
-public class DefaultArtifactDescriptorReader implements ArtifactDescriptorReader, Service {
+public class DefaultArtifactDescriptorReader implements ArtifactDescriptorReader {
private RemoteRepositoryManager remoteRepositoryManager;
private VersionResolver versionResolver;
@@ -188,20 +185,6 @@ public DefaultArtifactDescriptorReader(
setArtifactDescriptorDecorators(artifactDescriptorDecorators);
}
- @Deprecated
- public void initService(ServiceLocator locator) {
- setRemoteRepositoryManager(locator.getService(RemoteRepositoryManager.class));
- setVersionResolver(locator.getService(VersionResolver.class));
- setVersionRangeResolver(locator.getService(VersionRangeResolver.class));
- setArtifactResolver(locator.getService(ArtifactResolver.class));
- modelBuilder = locator.getService(ModelBuilder.class);
- if (modelBuilder == null) {
- setModelBuilder(new DefaultModelBuilderFactory().newInstance());
- }
- setRepositoryEventDispatcher(locator.getService(RepositoryEventDispatcher.class));
- setModelCacheFactory(locator.getService(ModelCacheFactory.class));
- }
-
public DefaultArtifactDescriptorReader setRemoteRepositoryManager(RemoteRepositoryManager remoteRepositoryManager) {
this.remoteRepositoryManager =
Objects.requireNonNull(remoteRepositoryManager, "remoteRepositoryManager cannot be null");
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 f5e1879bdab5..fe20ff400e46 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
@@ -54,8 +54,6 @@
import org.eclipse.aether.resolution.VersionRangeRequest;
import org.eclipse.aether.resolution.VersionRangeResolutionException;
import org.eclipse.aether.resolution.VersionRangeResult;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
import org.eclipse.aether.spi.synccontext.SyncContextFactory;
import org.eclipse.aether.util.ConfigUtils;
import org.eclipse.aether.util.version.GenericVersionScheme;
@@ -70,7 +68,7 @@
*/
@Named
@Singleton
-public class DefaultVersionRangeResolver implements VersionRangeResolver, Service {
+public class DefaultVersionRangeResolver implements VersionRangeResolver {
/**
* Configuration property for version range resolution used metadata {@link Metadata.Nature}.
* It may contain string names of {@link Metadata.Nature} enum values, or string value {@code "auto"}
@@ -105,13 +103,6 @@ public DefaultVersionRangeResolver(
setRepositoryEventDispatcher(repositoryEventDispatcher);
}
- @Deprecated
- public void initService(ServiceLocator locator) {
- setMetadataResolver(locator.getService(MetadataResolver.class));
- setSyncContextFactory(locator.getService(SyncContextFactory.class));
- setRepositoryEventDispatcher(locator.getService(RepositoryEventDispatcher.class));
- }
-
public DefaultVersionRangeResolver setMetadataResolver(MetadataResolver metadataResolver) {
this.metadataResolver = Objects.requireNonNull(metadataResolver, "metadataResolver cannot be null");
return this;
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java
index 70b65d9b2602..49566d8521cd 100644
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java
@@ -60,8 +60,6 @@
import org.eclipse.aether.resolution.VersionRequest;
import org.eclipse.aether.resolution.VersionResolutionException;
import org.eclipse.aether.resolution.VersionResult;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
import org.eclipse.aether.spi.synccontext.SyncContextFactory;
import org.eclipse.aether.util.ConfigUtils;
@@ -70,7 +68,7 @@
*/
@Named
@Singleton
-public class DefaultVersionResolver implements VersionResolver, Service {
+public class DefaultVersionResolver implements VersionResolver {
private static final String MAVEN_METADATA_XML = "maven-metadata.xml";
@@ -101,13 +99,6 @@ public DefaultVersionResolver(
setRepositoryEventDispatcher(repositoryEventDispatcher);
}
- @Deprecated
- public void initService(ServiceLocator locator) {
- setMetadataResolver(locator.getService(MetadataResolver.class));
- setSyncContextFactory(locator.getService(SyncContextFactory.class));
- setRepositoryEventDispatcher(locator.getService(RepositoryEventDispatcher.class));
- }
-
public DefaultVersionResolver setMetadataResolver(MetadataResolver metadataResolver) {
this.metadataResolver = Objects.requireNonNull(metadataResolver, "metadataResolver cannot be null");
return this;
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSessionBuilderSupplier.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSessionBuilderSupplier.java
new file mode 100644
index 000000000000..318acbb77ded
--- /dev/null
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSessionBuilderSupplier.java
@@ -0,0 +1,137 @@
+/*
+ * 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.
+ */
+package org.apache.maven.repository.internal;
+
+import java.util.Arrays;
+import java.util.Locale;
+import java.util.function.Supplier;
+
+import org.apache.maven.utils.Os;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession.CloseableSession;
+import org.eclipse.aether.RepositorySystemSession.SessionBuilder;
+import org.eclipse.aether.artifact.ArtifactTypeRegistry;
+import org.eclipse.aether.artifact.DefaultArtifactType;
+import org.eclipse.aether.collection.DependencyGraphTransformer;
+import org.eclipse.aether.collection.DependencyManager;
+import org.eclipse.aether.collection.DependencySelector;
+import org.eclipse.aether.collection.DependencyTraverser;
+import org.eclipse.aether.internal.impl.scope.OptionalDependencySelector;
+import org.eclipse.aether.internal.impl.scope.ScopeDependencySelector;
+import org.eclipse.aether.resolution.ArtifactDescriptorPolicy;
+import org.eclipse.aether.util.artifact.DefaultArtifactTypeRegistry;
+import org.eclipse.aether.util.artifact.JavaScopes;
+import org.eclipse.aether.util.graph.manager.ClassicDependencyManager;
+import org.eclipse.aether.util.graph.selector.AndDependencySelector;
+import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
+import org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer;
+import org.eclipse.aether.util.graph.transformer.ConfigurableVersionSelector;
+import org.eclipse.aether.util.graph.transformer.ConflictResolver;
+import org.eclipse.aether.util.graph.transformer.JavaDependencyContextRefiner;
+import org.eclipse.aether.util.graph.transformer.JavaScopeDeriver;
+import org.eclipse.aether.util.graph.transformer.JavaScopeSelector;
+import org.eclipse.aether.util.graph.transformer.SimpleOptionalitySelector;
+import org.eclipse.aether.util.graph.traverser.FatArtifactTraverser;
+import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy;
+
+import static java.util.Objects.requireNonNull;
+
+/**
+ * A simple {@link Supplier} of {@link SessionBuilder} instances, that on each call supplies newly
+ * constructed instance. To create session out of builder, use {@link SessionBuilder#build()}. For proper closing
+ * of sessions, use {@link CloseableSession#close()} method on built instance(s).
+ *
+ * @since 3.10.0
+ */
+public class MavenSessionBuilderSupplier implements Supplier {
+ protected final RepositorySystem repositorySystem;
+
+ public MavenSessionBuilderSupplier(RepositorySystem repositorySystem) {
+ this.repositorySystem = requireNonNull(repositorySystem);
+ }
+
+ protected void configureSessionBuilder(SessionBuilder session) {
+ session.setSystemProperties(System.getProperties());
+ boolean caseSensitive = !Os.IS_WINDOWS;
+ System.getenv().forEach((key, value) -> {
+ key = "env." + (caseSensitive ? key : key.toUpperCase(Locale.ENGLISH));
+ session.setSystemProperty(key, value);
+ });
+ session.setDependencyTraverser(getDependencyTraverser());
+ session.setDependencyManager(getDependencyManager());
+ session.setDependencySelector(getDependencySelector());
+ session.setDependencyGraphTransformer(getDependencyGraphTransformer());
+ session.setArtifactTypeRegistry(getArtifactTypeRegistry());
+ session.setArtifactDescriptorPolicy(getArtifactDescriptorPolicy());
+ }
+
+ protected DependencyTraverser getDependencyTraverser() {
+ return new FatArtifactTraverser();
+ }
+
+ protected DependencyManager getDependencyManager() {
+ return new ClassicDependencyManager();
+ }
+
+ protected DependencySelector getDependencySelector() {
+ return new AndDependencySelector(
+ ScopeDependencySelector.legacy(null, Arrays.asList(JavaScopes.TEST, JavaScopes.PROVIDED)),
+ OptionalDependencySelector.fromDirect(),
+ new ExclusionDependencySelector());
+ }
+
+ protected DependencyGraphTransformer getDependencyGraphTransformer() {
+ return new ChainedDependencyGraphTransformer(
+ new ConflictResolver(
+ new ConfigurableVersionSelector(),
+ new JavaScopeSelector(),
+ new SimpleOptionalitySelector(),
+ new JavaScopeDeriver()),
+ new JavaDependencyContextRefiner());
+ }
+
+ protected ArtifactTypeRegistry getArtifactTypeRegistry() {
+ DefaultArtifactTypeRegistry stereotypes = new DefaultArtifactTypeRegistry();
+ stereotypes.add(new DefaultArtifactType("pom"));
+ stereotypes.add(new DefaultArtifactType("maven-plugin", "jar", "", "java"));
+ stereotypes.add(new DefaultArtifactType("jar", "jar", "", "java"));
+ stereotypes.add(new DefaultArtifactType("ejb", "jar", "", "java"));
+ stereotypes.add(new DefaultArtifactType("ejb-client", "jar", "client", "java"));
+ stereotypes.add(new DefaultArtifactType("test-jar", "jar", "tests", "java"));
+ stereotypes.add(new DefaultArtifactType("javadoc", "jar", "javadoc", "java"));
+ stereotypes.add(new DefaultArtifactType("java-source", "jar", "sources", "java", false, false));
+ stereotypes.add(new DefaultArtifactType("fatjar", "jar", "", "java", true, true));
+ stereotypes.add(new DefaultArtifactType("war", "war", "", "java", false, true));
+ stereotypes.add(new DefaultArtifactType("ear", "ear", "", "java", false, true));
+ stereotypes.add(new DefaultArtifactType("rar", "rar", "", "java", false, true));
+ stereotypes.add(new DefaultArtifactType("par", "par", "", "java", false, true));
+ return stereotypes;
+ }
+
+ protected ArtifactDescriptorPolicy getArtifactDescriptorPolicy() {
+ return new SimpleArtifactDescriptorPolicy(true, true);
+ }
+
+ @Override
+ public SessionBuilder get() {
+ SessionBuilder builder = repositorySystem.createSessionBuilder();
+ configureSessionBuilder(builder);
+ return builder;
+ }
+}
diff --git a/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/MavenRepositorySystemUtilsTest.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/MavenRepositorySystemUtilsTest.java
deleted file mode 100644
index f0d578cd115e..000000000000
--- a/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/MavenRepositorySystemUtilsTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.
- */
-package org.apache.maven.repository.internal;
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.supplier.RepositorySystemSupplier;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-public class MavenRepositorySystemUtilsTest {
-
- @Test
- public void testGetRepositorySystem() {
- RepositorySystem repoSys = new RepositorySystemSupplier().get();
- assertNotNull(repoSys);
- }
-
- @Test
- public void testGetMetadataGeneratorFactories() {
- assertEquals(
- 3,
- new RepositorySystemSupplier().getMetadataGeneratorFactories().size());
- }
-}
diff --git a/pom.xml b/pom.xml
index ed25b3b68699..42be1743c6fb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -419,17 +419,6 @@ under the License.
maven-resolver-impl
${resolverVersion}
-
- org.apache.maven.resolver
- maven-resolver-supplier-mvn3
- ${resolverVersion}
-
-
- *
- *
-
-
-
org.apache.maven.resolver
maven-resolver-util