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>