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

gnodet 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 6dc2178651 Add an unconditional `ns` version range filter to filter 
out all snapshots (#2566)
6dc2178651 is described below

commit 6dc2178651634c69ea0a313b836d5305d783053b
Author: Tamas Cservenak <[email protected]>
AuthorDate: Thu Jul 17 07:56:35 2025 +0200

    Add an unconditional `ns` version range filter to filter out all snapshots 
(#2566)
---
 api/maven-api-core/src/main/java/org/apache/maven/api/Constants.java   | 1 +
 .../maven/internal/aether/DefaultRepositorySystemSessionFactory.java   | 3 +++
 2 files changed, 4 insertions(+)

diff --git 
a/api/maven-api-core/src/main/java/org/apache/maven/api/Constants.java 
b/api/maven-api-core/src/main/java/org/apache/maven/api/Constants.java
index 871731fb17..97029821c0 100644
--- a/api/maven-api-core/src/main/java/org/apache/maven/api/Constants.java
+++ b/api/maven-api-core/src/main/java/org/apache/maven/api/Constants.java
@@ -352,6 +352,7 @@ public final class Constants {
      *     <li>"h" or "h(num)" - highest version or top list of highest ones 
filter</li>
      *     <li>"l" or "l(num)" - lowest version or bottom list of lowest ones 
filter</li>
      *     <li>"s" - contextual snapshot filter</li>
+     *     <li>"ns" - unconditional snapshot filter (no snapshots selected 
from ranges)</li>
      *     <li>"e(G:A:V)" - predicate filter (leaves out G:A:V from range, if 
hit, V can be range)</li>
      * </ul>
      * Example filter expression: <code>"h(5);s;e(org.foo:bar:1)</code> will 
cause: ranges are filtered for "top 5" (instead
diff --git 
a/impl/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
 
b/impl/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
index 6638b6a46f..541c8364ed 100644
--- 
a/impl/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
+++ 
b/impl/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
@@ -63,6 +63,7 @@
 import org.eclipse.aether.util.graph.version.HighestVersionFilter;
 import org.eclipse.aether.util.graph.version.LowestVersionFilter;
 import org.eclipse.aether.util.graph.version.PredicateVersionFilter;
+import org.eclipse.aether.util.graph.version.SnapshotVersionFilter;
 import org.eclipse.aether.util.listener.ChainedRepositoryListener;
 import org.eclipse.aether.util.repository.AuthenticationBuilder;
 import org.eclipse.aether.util.repository.ChainedLocalRepositoryManager;
@@ -435,6 +436,8 @@ private VersionFilter buildVersionFilter(String 
filterExpression) {
                     filters.add(new LowestVersionFilter(num));
                 } else if ("s".equals(expression)) {
                     filters.add(new ContextualSnapshotVersionFilter());
+                } else if ("ns".equals(expression)) {
+                    filters.add(new SnapshotVersionFilter());
                 } else if (expression.startsWith("e(") && 
expression.endsWith(")")) {
                     Artifact artifact = new 
DefaultArtifact(expression.substring(2, expression.length() - 1));
                     VersionRange versionRange =

Reply via email to