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

cstamas 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 14d6d44ad9 Resolver 2.0.13 (#11137)
14d6d44ad9 is described below

commit 14d6d44ad9f3f8867ec6996abed98cc0ab2bcaef
Author: Tamas Cservenak <[email protected]>
AuthorDate: Fri Oct 10 11:40:15 2025 +0200

    Resolver 2.0.13 (#11137)
    
    Resolver 2.0.13 has fixed several bugs and issues from 2.0.11 causing 
endless loops/stack overflow with some more complex graphs.
    
    Changes in ITs:
    * classpath string is now levelOrder (not preOrder as Maven 3)
    * error string comparison that fits apache and jdk transport (error message 
is slightly different)
---
 .../AbstractArtifactComponentTestCase.java         |  2 +-
 .../internal/MavenSessionBuilderSupplier.java      |  5 ++-
 .../impl/standalone/RepositorySystemSupplier.java  | 12 ++++--
 .../testing/stubs/RepositorySystemSupplier.java    |  6 ++-
 ...ng3477DependencyResolutionErrorMessageTest.java |  4 +-
 .../MavenITmng3813PluginClassPathOrderingTest.java | 43 ++++++++++++++++++----
 pom.xml                                            |  2 +-
 7 files changed, 55 insertions(+), 19 deletions(-)

diff --git 
a/compat/maven-compat/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java
 
b/compat/maven-compat/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java
index 5214640c93..206fc6245c 100644
--- 
a/compat/maven-compat/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java
+++ 
b/compat/maven-compat/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java
@@ -310,7 +310,7 @@ protected DefaultRepositorySystemSession initRepoSession() 
throws Exception {
         DependencyTraverser depTraverser = new FatArtifactTraverser();
         session.setDependencyTraverser(depTraverser);
 
-        DependencyManager depManager = new ClassicDependencyManager(true, 
session.getScopeManager());
+        DependencyManager depManager = new 
ClassicDependencyManager(session.getScopeManager());
         session.setDependencyManager(depManager);
 
         DependencySelector depFilter = new AndDependencySelector(
diff --git 
a/compat/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSessionBuilderSupplier.java
 
b/compat/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSessionBuilderSupplier.java
index d0f985a083..0ee5153321 100644
--- 
a/compat/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSessionBuilderSupplier.java
+++ 
b/compat/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSessionBuilderSupplier.java
@@ -43,6 +43,7 @@
 import org.eclipse.aether.resolution.ArtifactDescriptorPolicy;
 import org.eclipse.aether.util.artifact.DefaultArtifactTypeRegistry;
 import org.eclipse.aether.util.graph.manager.ClassicDependencyManager;
+import org.eclipse.aether.util.graph.manager.TransitiveDependencyManager;
 import org.eclipse.aether.util.graph.selector.AndDependencySelector;
 import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
 import 
org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer;
@@ -95,7 +96,9 @@ protected DependencyManager getDependencyManager() {
     }
 
     public DependencyManager getDependencyManager(boolean transitive) {
-        return new ClassicDependencyManager(transitive, getScopeManager());
+        return transitive
+                ? new TransitiveDependencyManager(getScopeManager())
+                : new ClassicDependencyManager(getScopeManager());
     }
 
     protected DependencySelector getDependencySelector() {
diff --git 
a/impl/maven-impl/src/main/java/org/apache/maven/impl/standalone/RepositorySystemSupplier.java
 
b/impl/maven-impl/src/main/java/org/apache/maven/impl/standalone/RepositorySystemSupplier.java
index 36197566df..015f5ba38c 100644
--- 
a/impl/maven-impl/src/main/java/org/apache/maven/impl/standalone/RepositorySystemSupplier.java
+++ 
b/impl/maven-impl/src/main/java/org/apache/maven/impl/standalone/RepositorySystemSupplier.java
@@ -195,12 +195,14 @@ static BasicRepositoryConnectorFactory 
newBasicRepositoryConnectorFactory(
             TransporterProvider transporterProvider,
             RepositoryLayoutProvider layoutProvider,
             ChecksumPolicyProvider checksumPolicyProvider,
+            PathProcessor pathProcessor,
             ChecksumProcessor checksumProcessor,
             Map<String, ProvidedChecksumsSource> providedChecksumsSources) {
         return new BasicRepositoryConnectorFactory(
                 transporterProvider,
                 layoutProvider,
                 checksumPolicyProvider,
+                pathProcessor,
                 checksumProcessor,
                 providedChecksumsSources);
     }
@@ -251,8 +253,8 @@ static RemoteRepositoryFilterManager 
newRemoteRepositoryFilterManager(
     @Provides
     @Named(GroupIdRemoteRepositoryFilterSource.NAME)
     static GroupIdRemoteRepositoryFilterSource 
newGroupIdRemoteRepositoryFilterSource(
-            RepositorySystemLifecycle repositorySystemLifecycle) {
-        return new 
GroupIdRemoteRepositoryFilterSource(repositorySystemLifecycle);
+            RepositorySystemLifecycle repositorySystemLifecycle, PathProcessor 
pathProcessor) {
+        return new 
GroupIdRemoteRepositoryFilterSource(repositorySystemLifecycle, pathProcessor);
     }
 
     @Provides
@@ -566,8 +568,10 @@ static SparseDirectoryTrustedChecksumsSource 
newSparseDirectoryTrustedChecksumsS
     @Provides
     @Named(SummaryFileTrustedChecksumsSource.NAME)
     static SummaryFileTrustedChecksumsSource 
newSummaryFileTrustedChecksumsSource(
-            LocalPathComposer localPathComposer, RepositorySystemLifecycle 
repositorySystemLifecycle) {
-        return new SummaryFileTrustedChecksumsSource(localPathComposer, 
repositorySystemLifecycle);
+            LocalPathComposer localPathComposer,
+            RepositorySystemLifecycle repositorySystemLifecycle,
+            PathProcessor pathProcessor) {
+        return new SummaryFileTrustedChecksumsSource(localPathComposer, 
repositorySystemLifecycle, pathProcessor);
     }
 
     @Provides
diff --git 
a/impl/maven-testing/src/main/java/org/apache/maven/api/plugin/testing/stubs/RepositorySystemSupplier.java
 
b/impl/maven-testing/src/main/java/org/apache/maven/api/plugin/testing/stubs/RepositorySystemSupplier.java
index 0ba6036253..c31d266d18 100644
--- 
a/impl/maven-testing/src/main/java/org/apache/maven/api/plugin/testing/stubs/RepositorySystemSupplier.java
+++ 
b/impl/maven-testing/src/main/java/org/apache/maven/api/plugin/testing/stubs/RepositorySystemSupplier.java
@@ -541,7 +541,7 @@ protected Map<String, RemoteRepositoryFilterSource> 
createRemoteRepositoryFilter
         HashMap<String, RemoteRepositoryFilterSource> result = new HashMap<>();
         result.put(
                 GroupIdRemoteRepositoryFilterSource.NAME,
-                new 
GroupIdRemoteRepositoryFilterSource(getRepositorySystemLifecycle()));
+                new 
GroupIdRemoteRepositoryFilterSource(getRepositorySystemLifecycle(), 
getPathProcessor()));
         result.put(
                 PrefixesRemoteRepositoryFilterSource.NAME,
                 new PrefixesRemoteRepositoryFilterSource(
@@ -608,7 +608,8 @@ protected Map<String, TrustedChecksumsSource> 
createTrustedChecksumsSources() {
                 new 
SparseDirectoryTrustedChecksumsSource(getChecksumProcessor(), 
getLocalPathComposer()));
         result.put(
                 SummaryFileTrustedChecksumsSource.NAME,
-                new SummaryFileTrustedChecksumsSource(getLocalPathComposer(), 
getRepositorySystemLifecycle()));
+                new SummaryFileTrustedChecksumsSource(
+                        getLocalPathComposer(), 
getRepositorySystemLifecycle(), getPathProcessor()));
         return result;
     }
 
@@ -709,6 +710,7 @@ protected BasicRepositoryConnectorFactory 
createBasicRepositoryConnectorFactory(
                 getTransporterProvider(),
                 getRepositoryLayoutProvider(),
                 getChecksumPolicyProvider(),
+                getPathProcessor(),
                 getChecksumProcessor(),
                 getProvidedChecksumsSources());
     }
diff --git 
a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java
 
b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java
index 5ec5fa8c0f..1b2dbfd9a0 100644
--- 
a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java
+++ 
b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java
@@ -93,10 +93,10 @@ void connectionProblems() throws Exception {
     void connectionProblemsPlugin() throws Exception {
         testit(
                 54312,
-                new String[] {
+                new String[] { // JDK "Connection to..." Apache "Connect to..."
                     ".*The following artifacts could not be resolved: 
org.apache.maven.its.plugins:maven-it-plugin-not-exists:pom:1.2.3 \\(absent\\): 
"
                             + "Could not transfer artifact 
org.apache.maven.its.plugins:maven-it-plugin-not-exists:pom:1.2.3 from/to "
-                            + "central \\(http://localhost:.*/repo\\): 
Connection to http://localhost:.*2/repo/ refused.*"
+                            + "central 
\\(http://localhost:.*/repo\\):.*Connect.*refused.*"
                 },
                 "pom-plugin.xml");
     }
diff --git 
a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3813PluginClassPathOrderingTest.java
 
b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3813PluginClassPathOrderingTest.java
index 0331f30fe4..9c5638db95 100644
--- 
a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3813PluginClassPathOrderingTest.java
+++ 
b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3813PluginClassPathOrderingTest.java
@@ -68,13 +68,40 @@ public void testitMNG3813() throws Exception {
 
         assertEquals("8", pclProps.getProperty(resName + ".count"));
 
-        assertTrue(pclProps.getProperty(resName + 
".0").endsWith("/dep-a-0.1.jar!/" + resName));
-        assertTrue(pclProps.getProperty(resName + 
".1").endsWith("/dep-aa-0.1.jar!/" + resName));
-        assertTrue(pclProps.getProperty(resName + 
".2").endsWith("/dep-ac-0.1.jar!/" + resName));
-        assertTrue(pclProps.getProperty(resName + 
".3").endsWith("/dep-ab-0.1.jar!/" + resName));
-        assertTrue(pclProps.getProperty(resName + 
".4").endsWith("/dep-ad-0.1.jar!/" + resName));
-        assertTrue(pclProps.getProperty(resName + 
".5").endsWith("/dep-c-0.1.jar!/" + resName));
-        assertTrue(pclProps.getProperty(resName + 
".6").endsWith("/dep-b-0.1.jar!/" + resName));
-        assertTrue(pclProps.getProperty(resName + 
".7").endsWith("/dep-d-0.1.jar!/" + resName));
+        // The following dependency section spans this dependency tree:
+        //   dep-a
+        //     dep-aa
+        //     dep-ac
+        //     dep-ab
+        //     dep-ad
+        //   dep-c
+        //   dep-b
+        //   dep-d
+        //
+        // Given this tree, the correct/expected class path using preOrder is:
+        //   dep-a, dep-aa, dep-ac, dep-ab, dep-ad, dep-c, dep-b, dep-d
+        // The correct/expected class path using levelOrder is:
+        //   dep-a, dep-c, dep-b, dep-d, dep-aa, dep-ac, dep-ab, dep-ad
+        if (matchesVersionRange("[,4.1.0-SNAPSHOT)")) {
+            // preOrder
+            assertTrue(pclProps.getProperty(resName + 
".0").endsWith("/dep-a-0.1.jar!/" + resName));
+            assertTrue(pclProps.getProperty(resName + 
".1").endsWith("/dep-aa-0.1.jar!/" + resName));
+            assertTrue(pclProps.getProperty(resName + 
".2").endsWith("/dep-ac-0.1.jar!/" + resName));
+            assertTrue(pclProps.getProperty(resName + 
".3").endsWith("/dep-ab-0.1.jar!/" + resName));
+            assertTrue(pclProps.getProperty(resName + 
".4").endsWith("/dep-ad-0.1.jar!/" + resName));
+            assertTrue(pclProps.getProperty(resName + 
".5").endsWith("/dep-c-0.1.jar!/" + resName));
+            assertTrue(pclProps.getProperty(resName + 
".6").endsWith("/dep-b-0.1.jar!/" + resName));
+            assertTrue(pclProps.getProperty(resName + 
".7").endsWith("/dep-d-0.1.jar!/" + resName));
+        } else {
+            // levelOrder
+            assertTrue(pclProps.getProperty(resName + 
".0").endsWith("/dep-a-0.1.jar!/" + resName));
+            assertTrue(pclProps.getProperty(resName + 
".1").endsWith("/dep-c-0.1.jar!/" + resName));
+            assertTrue(pclProps.getProperty(resName + 
".2").endsWith("/dep-b-0.1.jar!/" + resName));
+            assertTrue(pclProps.getProperty(resName + 
".3").endsWith("/dep-d-0.1.jar!/" + resName));
+            assertTrue(pclProps.getProperty(resName + 
".4").endsWith("/dep-aa-0.1.jar!/" + resName));
+            assertTrue(pclProps.getProperty(resName + 
".5").endsWith("/dep-ac-0.1.jar!/" + resName));
+            assertTrue(pclProps.getProperty(resName + 
".6").endsWith("/dep-ab-0.1.jar!/" + resName));
+            assertTrue(pclProps.getProperty(resName + 
".7").endsWith("/dep-ad-0.1.jar!/" + resName));
+        }
     }
 }
diff --git a/pom.xml b/pom.xml
index f561fd3161..e3e6e0ac4c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -162,7 +162,7 @@ under the License.
     <plexusInterpolationVersion>1.28</plexusInterpolationVersion>
     <plexusTestingVersion>1.6.0</plexusTestingVersion>
     <plexusXmlVersion>4.1.0</plexusXmlVersion>
-    <resolverVersion>2.0.11</resolverVersion>
+    <resolverVersion>2.0.13</resolverVersion>
     <securityDispatcherVersion>4.1.0</securityDispatcherVersion>
     <sisuVersion>0.9.0.M4</sisuVersion>
     <slf4jVersion>2.0.17</slf4jVersion>

Reply via email to