File 0001-Resolver-2.0.11-11043-11115.patch of Package maven

From a86a18222f891b72824d8fab10ada8acd5518d40 Mon Sep 17 00:00:00 2001
From: Tamas Cservenak <tamas@cservenak.net>
Date: Thu, 11 Sep 2025 20:10:34 +0200
Subject: [PATCH] Resolver 2.0.11 (#11043) (#11115)

Update to Resolver 2.0.11.

Changes:
* up to Resolver 2.0.11
* port over required changes (ctor changes mostly in suppliers)
* `TestRepositoryConnector` never dealt with metadata properly, now is getting prefix metadata due RRF, fix it.

Unrelated to resolver changes:
* remove slf4j-simple from maven-compat (emits warnings as maven provider is already present)
* maven-cli fix double/unneeded simplex transfer listener creation
* maven-executor and ITs: externalize Toolbox version for simpler maintenance
---
 .../AbstractArtifactComponentTestCase.java    |  4 ++--
 compat/maven-embedder/pom.xml                 |  5 ----
 .../internal/MavenSessionBuilderSupplier.java |  4 ++--
 .../maven/cling/invoker/mvn/MavenContext.java |  2 ++
 .../maven/cling/invoker/mvn/MavenInvoker.java | 15 +++++++-----
 .../mvn/resident/ResidentMavenInvoker.java    |  1 +
 .../repository/TestRepositoryConnector.java   | 10 +++++---
 .../cling/executor/internal/ToolboxTool.java  | 24 ++++++++++++++++---
 .../cling/executor/impl/ToolboxToolTest.java  | 20 +++++++++-------
 .../standalone/RepositorySystemSupplier.java  |  5 +++-
 .../stubs/RepositorySystemSupplier.java       |  3 ++-
 its/core-it-suite/pom.xml                     |  2 ++
 .../java/org/apache/maven/it/Verifier.java    |  2 +-
 pom.xml                                       |  2 +-
 14 files changed, 66 insertions(+), 33 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 14f394c0c1..5214640c93 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
@@ -69,8 +69,8 @@
 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.NearestVersionSelector;
 import org.eclipse.aether.util.graph.transformer.SimpleOptionalitySelector;
 import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy;
 import org.junit.jupiter.api.BeforeEach;
@@ -323,7 +323,7 @@ protected DefaultRepositorySystemSession initRepoSession() throws Exception {
         ScopeManagerImpl scopeManager = new ScopeManagerImpl(Maven4ScopeManagerConfiguration.INSTANCE);
         session.setScopeManager(scopeManager);
         DependencyGraphTransformer transformer = new ConflictResolver(
-                new NearestVersionSelector(), new ManagedScopeSelector(scopeManager),
+                new ConfigurableVersionSelector(), new ManagedScopeSelector(scopeManager),
                 new SimpleOptionalitySelector(), new ManagedScopeDeriver(scopeManager));
         transformer =
                 new ChainedDependencyGraphTransformer(transformer, new ManagedDependencyContextRefiner(scopeManager));
diff --git a/compat/maven-embedder/pom.xml b/compat/maven-embedder/pom.xml
index e32a12be3b..7c1045dfcf 100644
--- a/compat/maven-embedder/pom.xml
+++ b/compat/maven-embedder/pom.xml
@@ -168,11 +168,6 @@ under the License.
       <artifactId>logback-classic</artifactId>
       <optional>true</optional>
     </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-simple</artifactId>
-      <optional>true</optional>
-    </dependency>
     <dependency>
       <groupId>org.jline</groupId>
       <artifactId>jansi-core</artifactId>
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 72275546b6..d0f985a083 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
@@ -46,8 +46,8 @@
 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.NearestVersionSelector;
 import org.eclipse.aether.util.graph.transformer.SimpleOptionalitySelector;
 import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy;
 
@@ -109,7 +109,7 @@ protected DependencySelector getDependencySelector() {
     protected DependencyGraphTransformer getDependencyGraphTransformer() {
         return new ChainedDependencyGraphTransformer(
                 new ConflictResolver(
-                        new NearestVersionSelector(), new ManagedScopeSelector(getScopeManager()),
+                        new ConfigurableVersionSelector(), new ManagedScopeSelector(getScopeManager()),
                         new SimpleOptionalitySelector(), new ManagedScopeDeriver(getScopeManager())),
                 new ManagedDependencyContextRefiner(getScopeManager()));
     }
diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/MavenContext.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/MavenContext.java
index 05e824b53f..c91b9bdb72 100644
--- a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/MavenContext.java
+++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/MavenContext.java
@@ -22,6 +22,7 @@
 import org.apache.maven.api.cli.InvokerRequest;
 import org.apache.maven.api.cli.mvn.MavenOptions;
 import org.apache.maven.cling.invoker.LookupContext;
+import org.apache.maven.cling.transfer.SimplexTransferListener;
 
 @SuppressWarnings("VisibilityModifier")
 public class MavenContext extends LookupContext {
@@ -29,6 +30,7 @@ public MavenContext(InvokerRequest invokerRequest, boolean containerCapsuleManag
         super(invokerRequest, containerCapsuleManaged, mavenOptions);
     }
 
+    public SimplexTransferListener simplexTransferListener;
     public Maven maven;
 
     @Override
diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/MavenInvoker.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/MavenInvoker.java
index 426e30d8ec..e6372ccfd8 100644
--- a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/MavenInvoker.java
+++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/MavenInvoker.java
@@ -360,12 +360,15 @@ protected TransferListener determineTransferListener(MavenContext context, boole
         if (quiet || noTransferProgress || quietCI) {
             delegate = new QuietMavenTransferListener();
         } else if (context.interactive && !logFile) {
-            SimplexTransferListener simplex = new SimplexTransferListener(new ConsoleMavenTransferListener(
-                    context.invokerRequest.messageBuilderFactory(),
-                    context.terminal.writer(),
-                    context.invokerRequest.effectiveVerbose()));
-            context.closeables.add(simplex);
-            delegate = simplex;
+            if (context.simplexTransferListener == null) {
+                SimplexTransferListener simplex = new SimplexTransferListener(new ConsoleMavenTransferListener(
+                        context.invokerRequest.messageBuilderFactory(),
+                        context.terminal.writer(),
+                        context.invokerRequest.effectiveVerbose()));
+                context.closeables.add(simplex);
+                context.simplexTransferListener = simplex;
+            }
+            delegate = context.simplexTransferListener;
         } else {
             delegate = new Slf4jMavenTransferListener();
         }
diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/resident/ResidentMavenInvoker.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/resident/ResidentMavenInvoker.java
index 34d2a69323..dfe857e244 100644
--- a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/resident/ResidentMavenInvoker.java
+++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/resident/ResidentMavenInvoker.java
@@ -86,6 +86,7 @@ protected MavenContext copyIfDifferent(MavenContext mavenContext, InvokerRequest
         shadow.containerCapsule = mavenContext.containerCapsule;
         shadow.lookup = mavenContext.lookup;
         shadow.eventSpyDispatcher = mavenContext.eventSpyDispatcher;
+        shadow.simplexTransferListener = mavenContext.simplexTransferListener;
         shadow.maven = mavenContext.maven;
 
         return shadow;
diff --git a/impl/maven-core/src/test/java/org/apache/maven/repository/TestRepositoryConnector.java b/impl/maven-core/src/test/java/org/apache/maven/repository/TestRepositoryConnector.java
index 8f8f1d902a..adcfbc3242 100644
--- a/impl/maven-core/src/test/java/org/apache/maven/repository/TestRepositoryConnector.java
+++ b/impl/maven-core/src/test/java/org/apache/maven/repository/TestRepositoryConnector.java
@@ -130,11 +130,15 @@ private String path(Artifact artifact) {
     private String path(Metadata metadata) {
         StringBuilder path = new StringBuilder(128);
 
-        path.append(metadata.getGroupId().replace('.', '/')).append('/');
+        if (!metadata.getGroupId().isBlank()) {
+            path.append(metadata.getGroupId().replace('.', '/')).append('/');
+        }
 
-        path.append(metadata.getArtifactId()).append('/');
+        if (!metadata.getArtifactId().isBlank()) {
+            path.append(metadata.getArtifactId()).append('/');
+        }
 
-        path.append("maven-metadata.xml");
+        path.append(metadata.getType());
 
         return path.toString();
     }
diff --git a/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/internal/ToolboxTool.java b/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/internal/ToolboxTool.java
index 1aaa548018..5d856655bf 100644
--- a/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/internal/ToolboxTool.java
+++ b/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/internal/ToolboxTool.java
@@ -40,12 +40,28 @@
  * @see <a href="https://github.com/maveniverse/toolbox">Maveniverse Toolbox</a>
  */
 public class ToolboxTool implements ExecutorTool {
-    private static final String TOOLBOX = "eu.maveniverse.maven.plugins:toolbox:0.7.4:";
+    private static final String TOOLBOX_PREFIX = "eu.maveniverse.maven.plugins:toolbox:";
 
     private final ExecutorHelper helper;
+    private final String toolboxVersion;
+    private final ExecutorHelper.Mode forceMode;
 
+    /**
+     * @deprecated Better specify required version yourself. This one is "cemented" to 0.7.4
+     */
+    @Deprecated
     public ToolboxTool(ExecutorHelper helper) {
+        this(helper, "0.7.4");
+    }
+
+    public ToolboxTool(ExecutorHelper helper, String toolboxVersion) {
+        this(helper, toolboxVersion, null);
+    }
+
+    public ToolboxTool(ExecutorHelper helper, String toolboxVersion, ExecutorHelper.Mode forceMode) {
         this.helper = requireNonNull(helper);
+        this.toolboxVersion = requireNonNull(toolboxVersion);
+        this.forceMode = forceMode; // nullable
     }
 
     @Override
@@ -119,12 +135,14 @@ private ExecutorRequest.Builder mojo(ExecutorRequest.Builder builder, String moj
         if (helper.mavenVersion().startsWith("4.")) {
             builder.argument("--raw-streams");
         }
-        return builder.argument(TOOLBOX + mojo).argument("--quiet").argument("-DforceStdout");
+        return builder.argument(TOOLBOX_PREFIX + toolboxVersion + ":" + mojo)
+                .argument("--quiet")
+                .argument("-DforceStdout");
     }
 
     private void doExecute(ExecutorRequest.Builder builder) {
         ExecutorRequest request = builder.build();
-        int ec = helper.execute(request);
+        int ec = forceMode == null ? helper.execute(request) : helper.execute(forceMode, request);
         if (ec != 0) {
             throw new ExecutorException("Unexpected exit code=" + ec + "; stdout="
                     + request.stdOut().orElse(null) + "; stderr="
diff --git a/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/impl/ToolboxToolTest.java b/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/impl/ToolboxToolTest.java
index 3f5bd0fc15..7787f0ca4b 100644
--- a/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/impl/ToolboxToolTest.java
+++ b/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/impl/ToolboxToolTest.java
@@ -43,6 +43,8 @@
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class ToolboxToolTest {
+    private static final String VERSION = "0.7.4";
+
     @TempDir
     private static Path userHome;
 
@@ -69,7 +71,7 @@ void dump3(ExecutorHelper.Mode mode) throws Exception {
                 userHome,
                 MavenExecutorTestSupport.EMBEDDED_MAVEN_EXECUTOR,
                 MavenExecutorTestSupport.FORKED_MAVEN_EXECUTOR);
-        Map<String, String> dump = new ToolboxTool(helper).dump(getExecutorRequest(helper));
+        Map<String, String> dump = new ToolboxTool(helper, VERSION).dump(getExecutorRequest(helper));
         assertEquals(System.getProperty("maven3version"), dump.get("maven.version"));
     }
 
@@ -83,7 +85,7 @@ void dump4(ExecutorHelper.Mode mode) throws Exception {
                 userHome,
                 MavenExecutorTestSupport.EMBEDDED_MAVEN_EXECUTOR,
                 MavenExecutorTestSupport.FORKED_MAVEN_EXECUTOR);
-        Map<String, String> dump = new ToolboxTool(helper).dump(getExecutorRequest(helper));
+        Map<String, String> dump = new ToolboxTool(helper, VERSION).dump(getExecutorRequest(helper));
         assertEquals(System.getProperty("maven4version"), dump.get("maven.version"));
     }
 
@@ -123,7 +125,7 @@ void localRepository3(ExecutorHelper.Mode mode) {
                 userHome,
                 MavenExecutorTestSupport.EMBEDDED_MAVEN_EXECUTOR,
                 MavenExecutorTestSupport.FORKED_MAVEN_EXECUTOR);
-        String localRepository = new ToolboxTool(helper).localRepository(getExecutorRequest(helper));
+        String localRepository = new ToolboxTool(helper, VERSION).localRepository(getExecutorRequest(helper));
         Path local = Paths.get(localRepository);
         assertTrue(Files.isDirectory(local));
     }
@@ -139,7 +141,7 @@ void localRepository4(ExecutorHelper.Mode mode) {
                 userHome,
                 MavenExecutorTestSupport.EMBEDDED_MAVEN_EXECUTOR,
                 MavenExecutorTestSupport.FORKED_MAVEN_EXECUTOR);
-        String localRepository = new ToolboxTool(helper).localRepository(getExecutorRequest(helper));
+        String localRepository = new ToolboxTool(helper, VERSION).localRepository(getExecutorRequest(helper));
         Path local = Paths.get(localRepository);
         assertTrue(Files.isDirectory(local));
     }
@@ -154,7 +156,7 @@ void artifactPath3(ExecutorHelper.Mode mode) {
                 userHome,
                 MavenExecutorTestSupport.EMBEDDED_MAVEN_EXECUTOR,
                 MavenExecutorTestSupport.FORKED_MAVEN_EXECUTOR);
-        String path = new ToolboxTool(helper)
+        String path = new ToolboxTool(helper, VERSION)
                 .artifactPath(getExecutorRequest(helper), "aopalliance:aopalliance:1.0", "central");
         // split repository: assert "ends with" as split may introduce prefixes
         assertTrue(
@@ -173,7 +175,7 @@ void artifactPath4(ExecutorHelper.Mode mode) {
                 userHome,
                 MavenExecutorTestSupport.EMBEDDED_MAVEN_EXECUTOR,
                 MavenExecutorTestSupport.FORKED_MAVEN_EXECUTOR);
-        String path = new ToolboxTool(helper)
+        String path = new ToolboxTool(helper, VERSION)
                 .artifactPath(getExecutorRequest(helper), "aopalliance:aopalliance:1.0", "central");
         // split repository: assert "ends with" as split may introduce prefixes
         assertTrue(
@@ -192,7 +194,8 @@ void metadataPath3(ExecutorHelper.Mode mode) {
                 userHome,
                 MavenExecutorTestSupport.EMBEDDED_MAVEN_EXECUTOR,
                 MavenExecutorTestSupport.FORKED_MAVEN_EXECUTOR);
-        String path = new ToolboxTool(helper).metadataPath(getExecutorRequest(helper), "aopalliance", "someremote");
+        String path =
+                new ToolboxTool(helper, VERSION).metadataPath(getExecutorRequest(helper), "aopalliance", "someremote");
         // split repository: assert "ends with" as split may introduce prefixes
         assertTrue(path.endsWith("aopalliance" + File.separator + "maven-metadata-someremote.xml"), "path=" + path);
     }
@@ -207,7 +210,8 @@ void metadataPath4(ExecutorHelper.Mode mode) {
                 userHome,
                 MavenExecutorTestSupport.EMBEDDED_MAVEN_EXECUTOR,
                 MavenExecutorTestSupport.FORKED_MAVEN_EXECUTOR);
-        String path = new ToolboxTool(helper).metadataPath(getExecutorRequest(helper), "aopalliance", "someremote");
+        String path =
+                new ToolboxTool(helper, VERSION).metadataPath(getExecutorRequest(helper), "aopalliance", "someremote");
         // split repository: assert "ends with" as split may introduce prefixes
         assertTrue(path.endsWith("aopalliance" + File.separator + "maven-metadata-someremote.xml"), "path=" + path);
     }
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 7089b9fb66..36197566df 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
@@ -258,8 +258,11 @@ static GroupIdRemoteRepositoryFilterSource newGroupIdRemoteRepositoryFilterSourc
     @Provides
     @Named(PrefixesRemoteRepositoryFilterSource.NAME)
     static PrefixesRemoteRepositoryFilterSource newPrefixesRemoteRepositoryFilterSource(
+            MetadataResolver metadataResolver,
+            RemoteRepositoryManager remoteRepositoryManager,
             RepositoryLayoutProvider repositoryLayoutProvider) {
-        return new PrefixesRemoteRepositoryFilterSource(repositoryLayoutProvider);
+        return new PrefixesRemoteRepositoryFilterSource(
+                () -> metadataResolver, () -> remoteRepositoryManager, repositoryLayoutProvider);
     }
 
     @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 18a48a4b47..0ba6036253 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
@@ -544,7 +544,8 @@ protected Map<String, RemoteRepositoryFilterSource> createRemoteRepositoryFilter
                 new GroupIdRemoteRepositoryFilterSource(getRepositorySystemLifecycle()));
         result.put(
                 PrefixesRemoteRepositoryFilterSource.NAME,
-                new PrefixesRemoteRepositoryFilterSource(getRepositoryLayoutProvider()));
+                new PrefixesRemoteRepositoryFilterSource(
+                        this::getMetadataResolver, this::getRemoteRepositoryManager, getRepositoryLayoutProvider()));
         return result;
     }
 
diff --git a/its/core-it-suite/pom.xml b/its/core-it-suite/pom.xml
index 6a3e42fa3e..c7a0bf41b2 100644
--- a/its/core-it-suite/pom.xml
+++ b/its/core-it-suite/pom.xml
@@ -80,6 +80,7 @@ under the License.
     <jetty9Version>9.4.57.v20241219</jetty9Version>
 
     <stubPluginVersion>0.1-stub-SNAPSHOT</stubPluginVersion>
+    <version.toolbox>0.7.4</version.toolbox>
   </properties>
 
   <dependencies>
@@ -519,6 +520,7 @@ under the License.
           <useSystemClassLoader>false</useSystemClassLoader>
           <promoteUserPropertiesToSystemProperties>false</promoteUserPropertiesToSystemProperties>
           <systemPropertyVariables>
+            <version.toolbox>${version.toolbox}</version.toolbox>
             <maven.test.user.home>${preparedUserHome}</maven.test.user.home>
             <maven.test.repo.local>${settings.localRepository}</maven.test.repo.local>
             <maven.test.tmpdir>${project.build.testOutputDirectory}</maven.test.tmpdir>
diff --git a/its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java b/its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java
index 7f6d1794ed..b25b328d67 100644
--- a/its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java
+++ b/its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java
@@ -155,7 +155,7 @@ public Verifier(String basedir, List<String> defaultCliArguments) throws Verific
                     this.userHomeDirectory,
                     EMBEDDED_MAVEN_EXECUTOR,
                     FORKED_MAVEN_EXECUTOR);
-            this.executorTool = new ToolboxTool(executorHelper);
+            this.executorTool = new ToolboxTool(executorHelper, System.getProperty("version.toolbox", "0.7.4"));
             this.defaultCliArguments =
                     new ArrayList<>(defaultCliArguments != null ? defaultCliArguments : DEFAULT_CLI_ARGUMENTS);
             this.logFile = this.basedir.resolve(logFileName);
diff --git a/pom.xml b/pom.xml
index 6ed11e5b29..5a4e7d006c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -163,7 +163,7 @@ under the License.
     <plexusInterpolationVersion>1.28</plexusInterpolationVersion>
     <plexusTestingVersion>1.5.0</plexusTestingVersion>
     <plexusXmlVersion>4.1.0</plexusXmlVersion>
-    <resolverVersion>2.0.9</resolverVersion>
+    <resolverVersion>2.0.11</resolverVersion>
     <securityDispatcherVersion>4.1.0</securityDispatcherVersion>
     <sisuVersion>0.9.0.M4</sisuVersion>
     <slf4jVersion>2.0.17</slf4jVersion>
-- 
2.51.0

openSUSE Build Service is sponsored by