Class PrefixesRemoteRepositoryFilterSource
java.lang.Object
org.eclipse.aether.internal.impl.filter.RemoteRepositoryFilterSourceSupport
org.eclipse.aether.internal.impl.filter.PrefixesRemoteRepositoryFilterSource
- All Implemented Interfaces:
org.eclipse.aether.spi.connector.filter.RemoteRepositoryFilterSource
@Singleton
@Named("prefixes")
public final class PrefixesRemoteRepositoryFilterSource
extends RemoteRepositoryFilterSourceSupport
Remote repository filter source filtering on path prefixes. It is backed by a file that lists all allowed path
prefixes from remote repository. Artifact that layout converted path (using remote repository layout) results in
path with no corresponding prefix present in this file is filtered out.
The file can be authored manually: format is one prefix per line, comments starting with "#" (hash) and empty lines for structuring are supported, The "/" (slash) character is used as file separator. Some remote repositories and MRMs publish these kind of files, they can be downloaded from corresponding URLs.
The prefix file is expected on path "${basedir}/prefixes-${repository.id}.txt".
The prefixes file is once loaded and cached, so in-flight prefixes file change during component existence are not noticed.
Examples of published prefix files:
- Central: prefixes.txt
- Apache Releases: prefixes.txt
- Since:
- 1.9.0
-
Nested Class Summary
Nested classes/interfaces inherited from class RemoteRepositoryFilterSourceSupport
RemoteRepositoryFilterSourceSupport.SimpleResult -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionPrefixesRemoteRepositoryFilterSource(Supplier<MetadataResolver> metadataResolver, Supplier<RemoteRepositoryManager> remoteRepositoryManager, org.eclipse.aether.spi.connector.layout.RepositoryLayoutProvider repositoryLayoutProvider) -
Method Summary
Modifier and TypeMethodDescriptionorg.eclipse.aether.spi.connector.filter.RemoteRepositoryFiltergetRemoteRepositoryFilter(org.eclipse.aether.RepositorySystemSession session) protected booleanisEnabled(org.eclipse.aether.RepositorySystemSession session) Returnstrueif session configuration contains this name set totrue.Methods inherited from class RemoteRepositoryFilterSourceSupport
getBasedir
-
Field Details
-
NAME
-
CONFIG_PROP_ENABLED
Configuration to enable the Prefixes filter (enabled by default). Can be fine-tuned per repository using repository ID suffixes. Important: For this filter to take effect, configuration files must be available. Without configuration files, the enabled filter remains dormant and does not interfere with resolution. Configuration File Resolution:- User-provided files: Checked first from directory specified by
CONFIG_PROP_BASEDIR(defaults to$LOCAL_REPO/.remoteRepositoryFilters) - Auto-discovery: If not found, attempts to download from remote repository and cache locally
prefixes-$(repository.id).txtRecommended Setup (Auto-Discovery with Override Capability): Start with auto-discovery, but prepare for project-specific overrides. Add to.mvn/maven.config:-Daether.remoteRepositoryFilter.prefixes=true -Daether.remoteRepositoryFilter.prefixes.basedir=${session.rootDirectory}/.mvn/rrf/Initial setup: Don't provide any files - rely on auto-discovery as repositories are accessed. Override when needed: Createprefixes-myrepoId.txtfiles in.mvn/rrf/and commit to version control. Caching: Auto-discovered prefix files are cached in the local repository with unique IDs (usingRepositoryIdHelper.remoteRepositoryUniqueId(RemoteRepository)) to prevent conflicts that could cause build failures.- See Also:
- User-provided files: Checked first from directory specified by
-
DEFAULT_ENABLED
- See Also:
-
CONFIG_PROP_BASEDIR
The basedir where to store filter files. If path is relative, it is resolved from local repository root.- See Also:
-
LOCAL_REPO_PREFIX_DIR
- See Also:
-
-
Constructor Details
-
PrefixesRemoteRepositoryFilterSource
@Inject public PrefixesRemoteRepositoryFilterSource(Supplier<MetadataResolver> metadataResolver, Supplier<RemoteRepositoryManager> remoteRepositoryManager, org.eclipse.aether.spi.connector.layout.RepositoryLayoutProvider repositoryLayoutProvider)
-
-
Method Details
-
isEnabled
Description copied from class:RemoteRepositoryFilterSourceSupportReturnstrueif session configuration contains this name set totrue.Default is
true.- Specified by:
isEnabledin classRemoteRepositoryFilterSourceSupport
-
getRemoteRepositoryFilter
public org.eclipse.aether.spi.connector.filter.RemoteRepositoryFilter getRemoteRepositoryFilter(org.eclipse.aether.RepositorySystemSession session)
-