[
https://issues.apache.org/jira/browse/MNG-7960?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17799279#comment-17799279
]
ASF GitHub Bot commented on MNG-7960:
-------------------------------------
gnodet commented on code in PR #1353:
URL: https://github.com/apache/maven/pull/1353#discussion_r1433547141
##########
maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java:
##########
@@ -406,6 +443,75 @@ public SessionBuilder
newRepositorySessionBuilder(MavenExecutionRequest request)
return session;
}
+ private VersionFilter buildVersionFilter(Map<Object, Object> configProps) {
+ ArrayList<VersionFilter> filters = new ArrayList<>();
+ String filterExpression = (String)
configProps.get(MAVEN_VERSION_FILTERS);
+ if (filterExpression != null) {
+ List<String> expressions =
Arrays.stream(filterExpression.split(","))
+ .filter(s -> s != null && !s.trim().isEmpty())
+ .collect(Collectors.toList());
+ for (String expression : expressions) {
+ if ("h".equals(expression)) {
+ filters.add(new HighestVersionFilter());
+ } else if (expression.startsWith("h(") &&
expression.endsWith(")")) {
+ int num = Integer.parseInt(expression.substring(2,
expression.length() - 1));
+ // MRESOLVER-450
+ // filters.add(new HighestVersionFilter(num));
Review Comment:
I think it's https://github.com/apache/maven-resolver/pull/401 /
MRESOLVER-460.
This PR should be moved to draft to avoid anyone forgetting it's not
finished and we need next resolver alpha.
> Artifact collection filtering
> -----------------------------
>
> Key: MNG-7960
> URL: https://issues.apache.org/jira/browse/MNG-7960
> Project: Maven
> Issue Type: New Feature
> Components: Artifacts and Repositories
> Reporter: Tamas Cservenak
> Assignee: Tamas Cservenak
> Priority: Major
> Fix For: 4.0.0, 4.0.0-alpha-12
>
>
> Exposed work from MRESOLVER-451 and MRESOLVER-460: allow for various
> filterings.
> User should be able to "tune" range processing. Also, as this affects
> resolution, ideally these "tuned" parameters should be stored along project,
> especially if project relies on these (ie. in {{.mvn/maven.config}}).
> Explanation: Maven is notoriously "bad" when ranges are being used. Hence,
> this issue introduces (range) version filtering support. The configuration
> accepts an "expression" (CSV) of filters. Supported filters are:
> * "h" (equivalent of "h(1)") or "h(N)" - that selects "top N" versions from
> range
> * "l" (equivalent of "l(1)") or "l(N)" - that selects "bottom N" versions
> from range
> * "s" snapshot filter: if root/project is snapshot, will allow snapshots in
> ranges, otherwise snapshot versions are filtered out (also see Resolver
> config {{aether.snapshotFilter}} present in Resolver 1.x but has no effect in
> Maven3 as it is not used).
> * "e(G:A:V)" exclusion, if range for G:A is processed, V is _excluded_ from
> range. V can be version range as well, then whole range is excluded.
> The built expressions are evaluated in-order, and filtering effect is
> accumulated. Hence, expression like "h(5),l" will return 5th highest version,
> etc.
> This depends on resolver release.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)