Class DefaultVersionFilterBuilder

java.lang.Object
org.eclipse.aether.internal.impl.collect.DefaultVersionFilterBuilder
All Implemented Interfaces:
org.eclipse.aether.collection.VersionFilterBuilder

@Singleton @Named public class DefaultVersionFilterBuilder extends Object implements org.eclipse.aether.collection.VersionFilterBuilder
Builds VersionFilter instances out of input expression string. Expression is a semicolon separated list of filters to apply. By default, no version filter is applied (like in Maven 3).
Supported filters:
  • "s" - contextual snapshot filter (project version decides are snapshots allowed or not)
  • "nosnapshot" - unconditional snapshot filter (no snapshot versions selected from ranges)
  • "norelease" - unconditional release filter (no release versions selected from ranges)
  • "nopreview" - unconditional preview filter (no preview versions selected from ranges)
  • "noprerelease" - unconditional pre-release filter (no preview and rc/cr versions selected from ranges)
  • "noqualifier" - unconditional any-qualifier filter (no version with any qualifier selected from ranges)
  • "h" (shorthand of h(1)) or "h(num)" - highest N version (based on version ordering)
  • "l" (shorthand of l(1)) or "l(num)" - lowest N version (based on version ordering)
  • "e(V)" - exclusion filter (excludes versions matching V version constraint)
  • "i(V)" - inclusion filter (includes versions matching V version constraint)
Every filter expression may have "scope" applied, in form of @G[:A]. Presence of "scope" narrows the application of filter to given G or G:A.

In case of multiple "similar" rule scopes, user should enlist rules from "most specific" to "least specific".

Example filter expression: "h(5);s;e(1)@org.foo:bar will cause:

  • ranges are filtered for "top 5" (instead of full range)
  • snapshots are banned if root project is not a snapshot
  • if range for org.foo:bar is being processed, version 1 is omitted
Values in this property builds org.eclipse.aether.collection.VersionFilter instance.
Since:
2.0.18
  • Constructor Details

  • Method Details

    • buildVersionFilter

      public Optional<org.eclipse.aether.collection.VersionFilter> buildVersionFilter(String filterExpression, Function<String, org.eclipse.aether.version.VersionConstraint> versionConstraintParser)
      Builds a version filter based on the given filter expression.
      Specified by:
      buildVersionFilter in interface org.eclipse.aether.collection.VersionFilterBuilder
      Parameters:
      filterExpression - a string containing filter expressions, may be null.
      versionConstraintParser - version constraint parts to be used during parsing, must not be null.
      Returns:
      optional version filter, never null.