diff --git a/apache-maven/pom.xml b/apache-maven/pom.xml
index 94ccc1a79670..f20c1f88e87c 100644
--- a/apache-maven/pom.xml
+++ b/apache-maven/pom.xml
@@ -82,7 +82,7 @@ under the License.
org.apache.maven.resolver
- maven-resolver-transport-http
+ maven-resolver-transport-apache
org.apache.maven.resolver
diff --git a/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java b/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java
index fbe682a05282..57ea0a2d9511 100644
--- a/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java
+++ b/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java
@@ -19,6 +19,7 @@
package org.apache.maven.artifact.repository.metadata;
import java.io.File;
+import java.nio.file.Path;
import java.util.Collections;
import java.util.Map;
@@ -92,6 +93,14 @@ public MetadataBridge setFile(File file) {
return this;
}
+ public Path getPath() {
+ return null;
+ }
+
+ public MetadataBridge setPath(Path file) {
+ return this;
+ }
+
public Nature getNature() {
if (metadata instanceof RepositoryMetadata) {
switch (((RepositoryMetadata) metadata).getNature()) {
diff --git a/maven-compat/src/test/java/org/apache/maven/project/ClasspathArtifactResolver.java b/maven-compat/src/test/java/org/apache/maven/project/ClasspathArtifactResolver.java
index 75bb6f17df06..54aa11984da9 100644
--- a/maven-compat/src/test/java/org/apache/maven/project/ClasspathArtifactResolver.java
+++ b/maven-compat/src/test/java/org/apache/maven/project/ClasspathArtifactResolver.java
@@ -61,7 +61,7 @@ public List resolveArtifacts(
throw new IllegalStateException("Missing test POM for " + artifact, e);
}
} else {
- result.addException(new ArtifactNotFoundException(artifact, null));
+ result.addException(new ArtifactNotFoundException(artifact, "not found"));
throw new ArtifactResolutionException(results);
}
}
diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
index f4e3559b52b1..f204586bebc0 100644
--- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
+++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
@@ -162,15 +162,16 @@ private MavenExecutionResult doExecute(MavenExecutionRequest request) {
// so that @SessionScoped components can be @Injected into AbstractLifecycleParticipants.
//
sessionScope.enter();
- try {
- DefaultRepositorySystemSession repoSession = (DefaultRepositorySystemSession) newRepositorySession(request);
- MavenSession session = new MavenSession(container, repoSession, request, result);
+ try (RepositorySystemSession.CloseableSession repoSession = newRepositorySession(request)) {
+ DefaultRepositorySystemSession mutableSession = new DefaultRepositorySystemSession(repoSession);
+ MavenSession session = new MavenSession(container, mutableSession, request, result);
+ sessionScope.seed(RepositorySystemSession.class, mutableSession);
sessionScope.seed(MavenSession.class, session);
legacySupport.setSession(session);
- return doExecute(request, session, result, repoSession);
+ return doExecute(request, session, result, mutableSession);
} finally {
sessionScope.exit();
}
@@ -308,8 +309,8 @@ private void afterSessionEnd(Collection projects, MavenSession ses
}
}
- public RepositorySystemSession newRepositorySession(MavenExecutionRequest request) {
- return repositorySessionFactory.newRepositorySession(request);
+ public RepositorySystemSession.CloseableSession newRepositorySession(MavenExecutionRequest request) {
+ return repositorySessionFactory.newRepositorySession(request).build();
}
private void validateLocalRepository(MavenExecutionRequest request) throws LocalRepositoryNotAccessibleException {
diff --git a/maven-core/src/main/java/org/apache/maven/artifact/repository/LegacyLocalRepositoryManager.java b/maven-core/src/main/java/org/apache/maven/artifact/repository/LegacyLocalRepositoryManager.java
index cd76c79d78d0..5ff846e7ff4f 100644
--- a/maven-core/src/main/java/org/apache/maven/artifact/repository/LegacyLocalRepositoryManager.java
+++ b/maven-core/src/main/java/org/apache/maven/artifact/repository/LegacyLocalRepositoryManager.java
@@ -28,6 +28,7 @@
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
import org.apache.maven.artifact.repository.metadata.RepositoryMetadataStoreException;
+import org.apache.maven.internal.aether.DefaultRepositorySystemSessionFactory;
import org.apache.maven.repository.Proxy;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystem;
@@ -64,18 +65,21 @@ public static RepositorySystemSession overlay(
return session;
}
- if (session != null) {
- LocalRepositoryManager lrm = session.getLocalRepositoryManager();
- if (lrm != null && lrm.getRepository().getBasedir().equals(new File(repository.getBasedir()))) {
- return session;
- }
+ LocalRepositoryManager lrm = session.getLocalRepositoryManager();
+ if (lrm != null
+ && lrm.getRepository()
+ .getBasePath()
+ .equals(DefaultRepositorySystemSessionFactory.resolve(repository.getBasedir()))) {
+ return session;
+ }
+ if (repository.getLayout() instanceof DefaultRepositoryLayout) {
+ return new DefaultRepositorySystemSession(session)
+ .setLocalRepositoryManager(DefaultRepositorySystemSessionFactory.setUpLocalRepositoryManager(
+ repository.getBasedir(), system, session));
} else {
- session = new DefaultRepositorySystemSession();
+ return new DefaultRepositorySystemSession(session)
+ .setLocalRepositoryManager(new LegacyLocalRepositoryManager(repository));
}
-
- final LocalRepositoryManager llrm = new LegacyLocalRepositoryManager(repository);
-
- return new DefaultRepositorySystemSession(session).setLocalRepositoryManager(llrm);
}
private LegacyLocalRepositoryManager(ArtifactRepository delegate) {
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 bcdf438db2ec..568126c46d86 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
@@ -21,6 +21,7 @@
import javax.inject.Inject;
import javax.inject.Named;
+import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
@@ -50,8 +51,8 @@
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.eclipse.aether.ConfigurationProperties;
-import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.repository.LocalRepository;
import org.eclipse.aether.repository.LocalRepositoryManager;
import org.eclipse.aether.repository.RepositoryPolicy;
@@ -115,15 +116,15 @@ public class DefaultRepositorySystemSessionFactory {
private static final String MAVEN_RESOLVER_TRANSPORT_WAGON = "wagon";
- private static final String MAVEN_RESOLVER_TRANSPORT_NATIVE = "native";
+ private static final String MAVEN_RESOLVER_TRANSPORT_APACHE = "native";
private static final String MAVEN_RESOLVER_TRANSPORT_AUTO = "auto";
private static final String WAGON_TRANSPORTER_PRIORITY_KEY = "aether.priority.WagonTransporterFactory";
- private static final String NATIVE_HTTP_TRANSPORTER_PRIORITY_KEY = "aether.priority.HttpTransporterFactory";
+ private static final String APACHE_HTTP_TRANSPORTER_PRIORITY_KEY = "aether.priority.ApacheTransporterFactory";
- private static final String NATIVE_FILE_TRANSPORTER_PRIORITY_KEY = "aether.priority.FileTransporterFactory";
+ private static final String FILE_TRANSPORTER_PRIORITY_KEY = "aether.priority.FileTransporterFactory";
private static final String RESOLVER_MAX_PRIORITY = String.valueOf(Float.MAX_VALUE);
@@ -154,10 +155,9 @@ public class DefaultRepositorySystemSessionFactory {
private RuntimeInformation runtimeInformation;
@SuppressWarnings("checkstyle:methodlength")
- public DefaultRepositorySystemSession newRepositorySession(MavenExecutionRequest request) {
- DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
-
- session.setCache(request.getRepositoryCache());
+ public RepositorySystemSession.SessionBuilder newRepositorySession(MavenExecutionRequest request) {
+ RepositorySystemSession.SessionBuilder mainSessionBuilder = MavenRepositorySystemUtils.newSession(repoSystem);
+ mainSessionBuilder.setCache(request.getRepositoryCache());
Map
+
commons-cli
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java b/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java
index bb903db6c18c..fabbeafd9db1 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java
@@ -92,11 +92,13 @@ public BootstrapCoreExtensionManager(
public List loadCoreExtensions(
MavenExecutionRequest request, Set providedArtifacts, List extensions)
throws Exception {
- RepositorySystemSession repoSession = repositorySystemSessionFactory.newRepositorySession(request);
- List repositories = RepositoryUtils.toRepos(request.getPluginArtifactRepositories());
- Interpolator interpolator = createInterpolator(request);
+ try (RepositorySystemSession.CloseableSession repoSession =
+ repositorySystemSessionFactory.newRepositorySession(request).build()) {
+ List repositories = RepositoryUtils.toRepos(request.getPluginArtifactRepositories());
+ Interpolator interpolator = createInterpolator(request);
- return resolveCoreExtensions(repoSession, repositories, providedArtifacts, extensions, interpolator);
+ return resolveCoreExtensions(repoSession, repositories, providedArtifacts, extensions, interpolator);
+ }
}
private List resolveCoreExtensions(
diff --git a/maven-resolver-provider/pom.xml b/maven-resolver-provider/pom.xml
index e14bbf689ecf..50a876c25ee1 100644
--- a/maven-resolver-provider/pom.xml
+++ b/maven-resolver-provider/pom.xml
@@ -60,6 +60,16 @@ under the License.
org.apache.maven.resolver
maven-resolver-impl
+
+ org.apache.maven.resolver
+ maven-resolver-supplier-mvn3
+
+
+ *
+ *
+
+
+
org.codehaus.plexus
plexus-utils
@@ -107,7 +117,7 @@ under the License.
org.apache.maven.resolver
- maven-resolver-transport-http
+ maven-resolver-transport-apache
test
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java
index 63c49d5a399e..6588b32fa526 100644
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java
@@ -22,6 +22,7 @@
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
+import java.nio.file.Path;
import java.util.Collections;
import java.util.Date;
import java.util.Map;
@@ -67,6 +68,13 @@ public File getFile() {
return file;
}
+ public Path getPath() {
+ if (file != null) {
+ return file.toPath();
+ }
+ return null;
+ }
+
@Override
public void merge(File existing, File result) throws RepositoryException {
Metadata recessive = read(existing);
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java
index 26fc96b68f9b..501c241973cc 100644
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java
@@ -19,16 +19,14 @@
package org.apache.maven.repository.internal;
import org.eclipse.aether.DefaultRepositorySystemSession;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
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.impl.ArtifactDescriptorReader;
-import org.eclipse.aether.impl.DefaultServiceLocator;
-import org.eclipse.aether.impl.MetadataGeneratorFactory;
-import org.eclipse.aether.impl.VersionRangeResolver;
-import org.eclipse.aether.impl.VersionResolver;
+import org.eclipse.aether.supplier.SessionBuilderSupplier;
import org.eclipse.aether.util.artifact.DefaultArtifactTypeRegistry;
import org.eclipse.aether.util.graph.manager.ClassicDependencyManager;
import org.eclipse.aether.util.graph.selector.AndDependencySelector;
@@ -59,22 +57,12 @@ private MavenRepositorySystemUtils() {
}
/**
- * Creates a new service locator that already knows about all service implementations included in this library. To
- * acquire a complete repository system, clients need to add some repository connectors for remote transfers.
+ * Creates a new Maven repository system session builder.
*
- * @return The new service locator, never {@code null}.
- * @deprecated This method is deprecated along with {@link DefaultServiceLocator} (since Maven Resolver 1.7.0).
+ * @return The new repository system session builder, never {@code null}.
*/
- @Deprecated
- public static DefaultServiceLocator newServiceLocator() {
- DefaultServiceLocator locator = new DefaultServiceLocator();
- locator.addService(ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class);
- locator.addService(VersionResolver.class, DefaultVersionResolver.class);
- locator.addService(VersionRangeResolver.class, DefaultVersionRangeResolver.class);
- locator.addService(MetadataGeneratorFactory.class, SnapshotMetadataGeneratorFactory.class);
- locator.addService(MetadataGeneratorFactory.class, VersionsMetadataGeneratorFactory.class);
- locator.addService(ModelCacheFactory.class, DefaultModelCacheFactory.class);
- return locator;
+ public static RepositorySystemSession.SessionBuilder newSession(RepositorySystem repositorySystem) {
+ return new SessionBuilderSupplier(repositorySystem).get();
}
/**
@@ -84,7 +72,9 @@ public static DefaultServiceLocator newServiceLocator() {
* the session with authentication, mirror, proxy and other information required for your environment.
*
* @return The new repository system session, never {@code null}.
+ * @deprecated Use {@link org.eclipse.aether.supplier.SessionBuilderSupplier} instead.
*/
+ @Deprecated
public static DefaultRepositorySystemSession newSession() {
DefaultRepositorySystemSession session = new DefaultRepositorySystemSession();
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java
deleted file mode 100644
index ec8caf6bc7f1..000000000000
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java
+++ /dev/null
@@ -1,77 +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 javax.inject.Named;
-import javax.inject.Singleton;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.Provides;
-import com.google.inject.name.Names;
-import org.apache.maven.model.building.DefaultModelBuilderFactory;
-import org.apache.maven.model.building.ModelBuilder;
-import org.eclipse.aether.impl.ArtifactDescriptorReader;
-import org.eclipse.aether.impl.MetadataGeneratorFactory;
-import org.eclipse.aether.impl.VersionRangeResolver;
-import org.eclipse.aether.impl.VersionResolver;
-import org.eclipse.aether.impl.guice.AetherModule;
-
-/**
- * MavenResolverModule
- */
-@Deprecated
-public final class MavenResolverModule extends AbstractModule {
-
- @Override
- protected void configure() {
- install(new AetherModule());
- bind(ArtifactDescriptorReader.class)
- .to(DefaultArtifactDescriptorReader.class)
- .in(Singleton.class);
- bind(VersionResolver.class).to(DefaultVersionResolver.class).in(Singleton.class);
- bind(VersionRangeResolver.class).to(DefaultVersionRangeResolver.class).in(Singleton.class);
- bind(MetadataGeneratorFactory.class)
- .annotatedWith(Names.named("snapshot"))
- .to(SnapshotMetadataGeneratorFactory.class)
- .in(Singleton.class);
-
- bind(MetadataGeneratorFactory.class)
- .annotatedWith(Names.named("versions"))
- .to(VersionsMetadataGeneratorFactory.class)
- .in(Singleton.class);
-
- bind(ModelBuilder.class).toInstance(new DefaultModelBuilderFactory().newInstance());
- bind(ModelCacheFactory.class).to(DefaultModelCacheFactory.class).in(Singleton.class);
- }
-
- @Provides
- @Singleton
- Set provideMetadataGeneratorFactories(
- @Named("snapshot") MetadataGeneratorFactory snapshot,
- @Named("versions") MetadataGeneratorFactory versions) {
- Set factories = new HashSet<>(2);
- factories.add(snapshot);
- factories.add(versions);
- return Collections.unmodifiableSet(factories);
- }
-}
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
index f8ce8ee47724..f0d578cd115e 100644
--- 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
@@ -19,8 +19,7 @@
package org.apache.maven.repository.internal;
import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.impl.MetadataGeneratorFactory;
-import org.eclipse.aether.spi.locator.ServiceLocator;
+import org.eclipse.aether.supplier.RepositorySystemSupplier;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -30,14 +29,14 @@ public class MavenRepositorySystemUtilsTest {
@Test
public void testGetRepositorySystem() {
- ServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator();
- RepositorySystem repoSys = locator.getService(RepositorySystem.class);
+ RepositorySystem repoSys = new RepositorySystemSupplier().get();
assertNotNull(repoSys);
}
@Test
public void testGetMetadataGeneratorFactories() {
- ServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator();
- assertEquals(2, locator.getServices(MetadataGeneratorFactory.class).size());
+ assertEquals(
+ 3,
+ new RepositorySystemSupplier().getMetadataGeneratorFactories().size());
}
}
diff --git a/pom.xml b/pom.xml
index 8d23b272eab5..0ca55575d7a3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -143,7 +143,7 @@ under the License.
2.0
2.0
1.4.0
- 1.9.27
+ 2.0.15
1.7.36
2.11.0
2.0.9
@@ -404,6 +404,11 @@ under the License.
maven-resolver-impl
${resolverVersion}
+
+ org.apache.maven.resolver
+ maven-resolver-supplier-mvn3
+ ${resolverVersion}
+
org.apache.maven.resolver
maven-resolver-util
@@ -421,7 +426,7 @@ under the License.
org.apache.maven.resolver
- maven-resolver-transport-http
+ maven-resolver-transport-apache
${resolverVersion}
@@ -509,6 +514,16 @@ under the License.
+
+
+
+ false
+
+ maven-2404
+ https://repository.apache.org/content/repositories/maven-2404/
+
+
+
@@ -535,6 +550,7 @@ under the License.
org.codehaus.modello
modello-maven-plugin
+ 2.6.0
modello-site-docs