Configuration Options

NoKeyTypeDescriptionDefault ValueSinceSupports Repo ID suffixSource
1."aether.artifactResolver.postProcessor.trustedChecksums"BooleanIs post processor enabled.false1.9.0NoSession Configuration
2."aether.artifactResolver.postProcessor.trustedChecksums.checksumAlgorithms"StringThe checksum algorithms to apply during post-processing as comma separated list."SHA-1"1.9.0NoSession Configuration
3."aether.artifactResolver.postProcessor.trustedChecksums.failIfMissing"BooleanShould post processor fail resolution if checksum is missing?false1.9.0NoSession Configuration
4."aether.artifactResolver.postProcessor.trustedChecksums.record"BooleanShould post processor go into “record” mode (and collect checksums instead of validate them)?false1.9.0NoSession Configuration
5."aether.artifactResolver.postProcessor.trustedChecksums.snapshots"BooleanShould post processor process snapshots as well?false1.9.0NoSession Configuration
6."aether.artifactResolver.simpleLrmInterop"BooleanConfiguration to enable “interoperability” with Simple LRM, but this breaks RRF feature, hence this configuration is IGNORED when RRF is used, and is warmly recommended to leave it disabled even if no RRF is being used.falseNoSession Configuration
7."aether.artifactResolver.snapshotNormalization"BooleanConfiguration to enable “snapshot normalization”, downloaded snapshots from remote with timestamped file names will have file names converted back to baseVersion. It replaces the timestamped snapshot file name with a filename containing the SNAPSHOT qualifier only. This only affects resolving/retrieving artifacts but not uploading those.trueNoSession Configuration
8."aether.chainedLocalRepository.ignoreTailAvailability"BooleanWhen using chained local repository, should be the artifact availability ignored in tail.true1.9.2NoSession Configuration
9."aether.checksums.omitChecksumsForExtensions"StringComma-separated list of extensions with leading dot (example “.asc”) that should have checksums omitted. These are applied to sub-artifacts only. Note: to achieve 1.7.x aether.checksums.forSignature=true behaviour, pass empty string as value for this property.".asc,.sigstore"NoSession Configuration
10."aether.conflictResolver.verbose"ObjectThe key in the repository session‘s used to store a flag controlling the transformer’s verbose mode. Accepted values are Boolean types, String type (where “true” would be interpreted as ) or Verbosity enum instances."NONE"NoSession Configuration
11."aether.connector.basic.downstreamThreads"IntegerNumber of threads in basic connector for downloading.52.0.0YesSession Configuration
12."aether.connector.basic.parallelPut"BooleanEnables or disables parallel PUT processing (parallel deploys) on basic connector globally or per remote repository. When disabled, connector behaves exactly as in Maven 3.8.x did: GETs are parallel while PUTs are sequential.true1.9.5YesSession Configuration
13."aether.connector.basic.persistedChecksums"BooleanFlag indicating whether checksums which are retrieved during checksum validation should be persisted in the local repository next to the file they provide the checksum for.true0.9.0.M4NoSession Configuration
14."aether.connector.basic.smartChecksums"BooleanFlag indicating that instead of comparing the external checksum fetched from the remote repo with the calculated one, it should try to extract the reference checksum from the actual artifact response headers This only works for HTTP transports.true0.9.0.M3NoSession Configuration
15."aether.connector.basic.threads"IntegerNumber of threads in basic connector for uploading/downloading. Observed only if some of the upstream or downstream threads are not set. (Deprecated)50.9.0.M4NoSession Configuration
16."aether.connector.basic.upstreamThreads"IntegerNumber of threads in basic connector for uploading.52.0.0YesSession Configuration
17."aether.dependencyCollector.bf.skipper"BooleanThe key in the repository session‘s used to store a flag controlling the resolver’s skip mode.true1.8.0NoSession Configuration
18."aether.dependencyCollector.bf.threads"IntegerThe count of threads to be used when collecting POMs in parallel.51.9.0NoSession Configuration
19."aether.dependencyCollector.impl"StringThe name of the dependency collector implementation to use: depth-first (original) named “df”, and breadth-first (new in 1.8.0) named “bf”. Both collectors produce equivalent results, but they may differ performance wise, depending on project being applied to. Our experience shows that existing “df” is well suited for smaller to medium size projects, while “bf” may perform better on huge projects with many dependencies. Experiment (and come back to us!) to figure out which one suits you the better."bf"1.8.0NoSession Configuration
20."aether.dependencyCollector.maxCycles"IntegerOnly up to the given amount cyclic dependencies are emitted.101.8.0NoSession Configuration
21."aether.dependencyCollector.maxExceptions"IntegerOnly exceptions up to the number given in this configuration property are emitted. Exceptions which exceed that number are swallowed.501.8.0NoSession Configuration
22."aether.dependencyCollector.pool.artifact"StringFlag controlling interning data pool type used by dependency collector for Artifact instances, matters for heap consumption. By default, uses “weak” references (consume less heap). Using “hard” will make it much more memory aggressive and possibly faster (system and Java dependent). Supported values: “hard”, “weak”."weak"1.9.5NoSession Configuration
23."aether.dependencyCollector.pool.dependency"StringFlag controlling interning data pool type used by dependency collector for Dependency instances, matters for heap consumption. By default, uses “weak” references (consume less heap). Using “hard” will make it much more memory aggressive and possibly faster (system and Java dependent). Supported values: “hard”, “weak”."weak"1.9.5NoSession Configuration
24."aether.dependencyCollector.pool.descriptor"StringFlag controlling interning data pool type used by dependency collector for ArtifactDescriptor (POM) instances, matters for heap consumption. By default, uses “weak” references (consume less heap). Using “hard” will make it much more memory aggressive and possibly faster (system and Java dependent). Supported values: “hard”, “weak”."hard"1.9.5NoSession Configuration
25."aether.dependencyManager.verbose"BooleanThe key in the repository session‘s used to store a flag controlling the verbose mode for dependency management. If enabled, the original attributes of a dependency before its update due to dependency management will be recorded * in the node’s when building a dependency graph.falseNoSession Configuration
26."aether.generator.gpg.agentSocketLocations"StringThe GnuPG agent socket(s) to try. Comma separated list of socket paths. If relative, will be resolved from user home directory.".gnupg/S.gpg-agent"2.0.0NoSession Configuration
27."aether.generator.gpg.enabled"BooleanWhether GnuPG signer is enabled.false2.0.0NoSession Configuration
28."aether.generator.gpg.keyFilePath"StringThe path to the OpenPGP transferable secret key file. If relative, is resolved from local repository root."maven-signing-key.key"2.0.0NoSession Configuration
29."aether.generator.gpg.keyFingerprint"StringThe PGP Key fingerprint as hex string (40 characters long), optional. If not set, first secret key found will be used.-2.0.0NoSession Configuration
30."aether.generator.gpg.useAgent"BooleanWhether GnuPG agent should be used.true2.0.0NoSession Configuration
31."aether.interactive"BooleanA flag indicating whether interaction with the user is allowed.falseNoSession Configuration
32."aether.layout.maven2.checksumAlgorithms"StringComma-separated list of checksum algorithms with which checksums are validated (downloaded) and generated (uploaded) with this layout. Resolver by default supports following algorithms: MD5, SHA-1, SHA-256 and SHA-512. New algorithms can be added by implementing ChecksumAlgorithmFactory component."SHA-1,MD5"1.8.0YesSession Configuration
33."aether.lrm.enhanced.localPrefix"StringThe prefix to use for locally installed artifacts."installed"1.8.1NoSession Configuration
34."aether.lrm.enhanced.releasesPrefix"StringThe prefix to use for release artifacts."releases"1.8.1NoSession Configuration
35."aether.lrm.enhanced.remotePrefix"StringThe prefix to use for remotely cached artifacts."cached"1.8.1NoSession Configuration
36."aether.lrm.enhanced.snapshotsPrefix"StringThe prefix to use for snapshot artifacts."snapshots"1.8.1NoSession Configuration
37."aether.lrm.enhanced.split"BooleanWhether LRM should split local and remote artifacts.false1.8.1NoSession Configuration
38."aether.lrm.enhanced.splitLocal"BooleanWhether locally installed artifacts should be split by version (release/snapshot).false1.8.1NoSession Configuration
39."aether.lrm.enhanced.splitRemote"BooleanWhether cached artifacts should be split by version (release/snapshot).false1.8.1NoSession Configuration
40."aether.lrm.enhanced.splitRemoteRepository"BooleanWhether cached artifacts should be split by origin repository (repository ID).false1.8.1NoSession Configuration
41."aether.lrm.enhanced.splitRemoteRepositoryLast"BooleanFor cached artifacts, if both splitRemote and splitRemoteRepository are set to true sets the splitting order: by default it is repositoryId/version (false) or version/repositoryId (true)false1.8.1NoSession Configuration
42."aether.lrm.enhanced.trackingFilename"StringFilename of the file in which to track the remote repositories."_remote.repositories"NoSession Configuration
43."aether.metadataResolver.threads"IntegerNumber of threads to use in parallel for resolving metadata.40.9.0.M4NoSession Configuration
44."aether.named.diagnostic.enabled"BooleanSystem property key to enable locking diagnostic collection.false1.9.11NoJava System Properties
45."aether.named.file-lock.attempts"IntegerTweak: on Windows, the presence of StandardOpenOption#DELETE_ON_CLOSE causes concurrency issues. This flag allows to implement similar fix as referenced JDK bug report: retry and hope the best. Default value is 5 attempts (will retry 4 times).51.7.3NoJava System Properties
46."aether.named.file-lock.deleteLockFiles"BooleanTweak: on Windows, the presence of StandardOpenOption#DELETE_ON_CLOSE causes concurrency issues. This flag allows to have it removed from effective flags, at the cost that lockfile directory becomes crowded with 0 byte sized lock files that are never cleaned up. Default value is on non-Windows OS. See JDK-8252883 for Windows related bug. Users on Windows can still force “delete on close” by explicitly setting this property to .true1.7.3NoJava System Properties
47."aether.named.file-lock.sleepMillis"LongTweak: When used, the amount of milliseconds to sleep between subsequent retries. Default value is 50 milliseconds.501.7.3NoJava System Properties
48."aether.offline.hosts"StringComma-separated list of hosts which are supposed to be resolved offline.-NoSession Configuration
49."aether.offline.protocols"StringComma-separated list of protocols which are supposed to be resolved offline.-NoSession Configuration
50."aether.priority.cached"BooleanA flag indicating whether the created ordered components should be cached in session.true2.0.0NoSession Configuration
51."aether.priority.implicit"BooleanA flag indicating whether the priorities of pluggable extensions are implicitly given by their iteration order such that the first extension has the highest priority. If set, an extension's built-in priority as well as any corresponding configuration properties are ignored when searching for a suitable implementation among the available extensions. This priority mode is meant for cases where the application will present/inject extensions in the desired search order.falseNoSession Configuration
52."aether.remoteRepositoryFilter.groupId"BooleanIs filter enabled?false1.9.0NoSession Configuration
53."aether.remoteRepositoryFilter.groupId.basedir"StringThe basedir where to store filter files. If path is relative, it is resolved from local repository root.".remoteRepositoryFilters"1.9.0NoSession Configuration
54."aether.remoteRepositoryFilter.groupId.record"BooleanShould filter go into “record” mode (and collect encountered artifacts)?false1.9.0NoSession Configuration
55."aether.remoteRepositoryFilter.prefixes"BooleanIs filter enabled?false1.9.0NoSession Configuration
56."aether.remoteRepositoryFilter.prefixes.basedir"StringThe basedir where to store filter files. If path is relative, it is resolved from local repository root.".remoteRepositoryFilters"1.9.0NoSession Configuration
57."aether.snapshotFilter"BooleanThe key in the repository session's used to store a flag whether this filter should be forced to ban snapshots. By default, snapshots are only filtered if the root artifact is not a snapshot.falseNoSession Configuration
58."aether.syncContext.named.basedir.locksDir"StringThe location of the directory toi use for locks. If relative path, it is resolved from the local repository root.".locks"1.9.0NoSession Configuration
59."aether.syncContext.named.discriminating.discriminator"StringConfiguration property to pass in discriminator, if needed. If not present, it is auto-calculated.-1.7.0NoSession Configuration
60."aether.syncContext.named.discriminating.hostname"StringConfiguration property to pass in hostname, if needed. If not present, hostname as reported by system will be used.-1.7.0NoSession Configuration
61."aether.syncContext.named.factory"StringName of the lock factory to use in session."file-lock"1.9.1NoSession Configuration
62."aether.syncContext.named.hashing.depth"IntegerThe depth how many levels should adapter create. Acceptable values are 0-4 (inclusive).21.9.0NoSession Configuration
63."aether.syncContext.named.nameMapper"StringName of the name mapper to use in session. Out of the box supported ones are “static”, “gav”, “file-gav”, “file-hgav”, “file-static” and “discriminating”."file-gav"1.9.1NoSession Configuration
64."aether.syncContext.named.redisson.address"StringAddress of the Redis instance. Optional."redis://localhost:6379"2.0.0NoJava System Properties
65."aether.syncContext.named.redisson.configFile"StringPath to a Redisson configuration file in YAML format. Read official documentation for details.-1.7.0NoJava System Properties
66."aether.syncContext.named.retry"IntegerThe amount of retries on time-out.11.7.0NoSession Configuration
67."aether.syncContext.named.retry.wait"LongThe amount of milliseconds to wait between retries on time-out.200l1.7.0NoSession Configuration
68."aether.syncContext.named.time"LongThe maximum of time amount to be blocked to obtain lock.30l1.7.0NoSession Configuration
69."aether.syncContext.named.time.unit"StringThe unit of maximum time amount to be blocked to obtain lock. Use TimeUnit enum names."SECONDS"1.7.0NoSession Configuration
70."aether.system.dependencyVisitor"StringA flag indicating which visitor should be used to “flatten” the dependency graph into list. Default is same as in older resolver versions “preOrder”, while it can accept values like “postOrder” and “levelOrder”."preOrder"2.0.0NoSession Configuration
71."aether.transport.apache.https.cipherSuites"StringComma-separated list of Cipher Suites which are enabled for HTTPS connections.-2.0.0NoSession Configuration
72."aether.transport.apache.https.protocols"StringComma-separated list of Protocols which are enabled for HTTPS connections.-2.0.0NoSession Configuration
73."aether.transport.apache.retryHandler.name"StringThe name of retryHandler, supported values are “standard”, that obeys RFC-2616, regarding idempotent methods, and “default” that considers requests w/o payload as idempotent."standard"2.0.0YesSession Configuration
74."aether.transport.apache.retryHandler.requestSentEnabled"BooleanSet to true if it is acceptable to retry non-idempotent requests, that have been sent.false2.0.0YesSession Configuration
75."aether.transport.apache.useSystemProperties"BooleanIf enabled, underlying Apache HttpClient will use system properties as well to configure itself (typically used to set up HTTP Proxy via Java system properties). See HttpClientBuilder for used properties. This mode is not recommended, better use documented ways of configuration instead.false2.0.0YesSession Configuration
76."aether.transport.classpath.loader"ClassLoaderThe key in the repository session's used to store a from which resources should be retrieved. If unspecified, the of the current thread will be used.-NoSession Configuration
77."aether.transport.http.connectTimeout"IntegerThe maximum amount of time (in milliseconds) to wait for a successful connection to a remote server. Non-positive values indicate no timeout.10000YesSession Configuration
78."aether.transport.http.connectionMaxTtl"IntegerTotal time to live in seconds for an HTTP connection, after that time, the connection will be dropped (no matter for how long it was idle).3001.9.8YesSession Configuration
79."aether.transport.http.credentialEncoding"StringThe encoding/charset to use when exchanging credentials with HTTP servers. Besides this general key, clients may also specify the encoding for a specific remote repository by appending the suffix to this key when storing the charset name."ISO-8859-1"YesSession Configuration
80."aether.transport.http.expectContinue"BooleanBoolean flag should the HTTP transport use expect-continue handshake for PUT requests. Not all transport support this option. This option may be needed for some broken HTTP servers. Default value corresponds to given transport default one (resolver does not override those), but if configuration IS given, it will replace given transport own default value.-1.9.17YesSession Configuration
81."aether.transport.http.headers"java.util.MapThe request headers to use for HTTP-based repository connectors. The headers are specified using a , mapping a header name to its value. Besides this general key, clients may also specify headers for a specific remote repository by appending the suffix to this key when storing the headers map. The repository-specific headers map is supposed to be complete, i.e. is not merged with the general headers map.-YesSession Configuration
82."aether.transport.http.localAddress"StringThe local address (interface) to use with HTTP transport. Not all transport supports this option.-2.0.0YesSession Configuration
83."aether.transport.http.maxConnectionsPerRoute"IntegerThe maximum concurrent connections per route HTTP client is allowed to use.501.9.8YesSession Configuration
84."aether.transport.http.preemptiveAuth"BooleanShould HTTP client use preemptive-authentication for all HTTP verbs (works only w/ BASIC). By default, is disabled, as it is considered less secure.false1.9.6YesSession Configuration
85."aether.transport.http.preemptivePutAuth"BooleanBoolean flag should the HTTP transport use preemptive-auth for PUT requests. Not all transport support this option.true2.0.0 (moved out from maven-resolver-transport-http).YesSession Configuration
86."aether.transport.http.requestTimeout"IntegerThe maximum amount of time (in milliseconds) to wait for remaining data to arrive from a remote server. Note that this timeout does not restrict the overall duration of a request, it only restricts the duration of inactivity between consecutive data packets. Non-positive values indicate no timeout.1800000YesSession Configuration
87."aether.transport.http.retryHandler.count"IntegerThe maximum number of times a request to a remote server should be retried in case of an error.31.9.6YesSession Configuration
88."aether.transport.http.retryHandler.interval"LongThe initial retry interval in millis of request to a remote server should be waited in case of “too many requests” (HTTP codes 429 and 503). Accepts long as milliseconds. This value is used if remote server does not use header, in which case Server value is obeyed.5000l1.9.16YesSession Configuration
89."aether.transport.http.retryHandler.intervalMax"LongThe maximum retry interval in millis of request to a remote server above which the request should be aborted instead. In theory, a malicious server could tell Maven “come back after 100 years” that would stall the build for some. Using this parameter Maven will fail the request instead, if interval is above this value.300000l1.9.16YesSession Configuration
90."aether.transport.http.retryHandler.serviceUnavailable"StringThe HTTP codes of remote server responses that should be handled as “too many requests” (examples: HTTP codes 429 and 503). Accepts comma separated list of HTTP response codes."429,503"1.9.16YesSession Configuration
91."aether.transport.http.reuseConnections"BooleanShould HTTP client reuse connections (in other words, pool connections) or not?true1.9.8YesSession Configuration
92."aether.transport.http.supportWebDav"BooleanBoolean flag should the HTTP transport support WebDAV remote. Not all transport support this option.false2.0.0 (moved out from maven-resolver-transport-http).YesSession Configuration
93."aether.transport.http.userAgent"StringThe user agent that repository connectors should report to servers."Aether"NoSession Configuration
94."aether.transport.https.securityMode"StringThe mode that sets HTTPS transport “security mode”: to ignore any SSL errors (certificate validity checks, hostname verification). The default value is ."default"1.9.6YesSession Configuration
95."aether.transport.jdk.httpVersion"StringUse string representation of HttpClient version enum “HTTP_2” or “HTTP_1_1” to set default HTTP protocol to use."HTTP_2"2.0.0YesSession Configuration
96."aether.transport.jdk.maxConcurrentRequests"IntegerThe hard limit of maximum concurrent requests JDK transport can do. This is a workaround for the fact, that in HTTP/2 mode, JDK HttpClient initializes this value to Integer.MAX_VALUE (!) and lowers it on first response from the remote server (but it may be too late). See JDK bug JDK-8225647 for details.1002.0.0YesSession Configuration
97."aether.transport.wagon.config"ObjectThe configuration to use for the Wagon provider.-YesSession Configuration
98."aether.transport.wagon.perms.dirMode"StringOctal numerical notation of permissions to set for newly created directories. Only considered by certain Wagon providers.-YesSession Configuration
99."aether.transport.wagon.perms.fileMode"StringOctal numerical notation of permissions to set for newly created files. Only considered by certain Wagon providers.-YesSession Configuration
100."aether.transport.wagon.perms.group"StringGroup which should own newly created directories/files. Only considered by certain Wagon providers.-YesSession Configuration
101."aether.trustedChecksumsSource.sparseDirectory"BooleanIs checksum source enabled?false1.9.0NoSession Configuration
102."aether.trustedChecksumsSource.sparseDirectory.basedir"StringThe basedir where checksums are. If relative, is resolved from local repository root.".checksums"1.9.0NoSession Configuration
103."aether.trustedChecksumsSource.sparseDirectory.originAware"BooleanIs source origin aware?true1.9.0NoSession Configuration
104."aether.trustedChecksumsSource.summaryFile"BooleanIs checksum source enabled?false1.9.0NoSession Configuration
105."aether.trustedChecksumsSource.summaryFile.basedir"StringThe basedir where checksums are. If relative, is resolved from local repository root.".checksums"1.9.0NoSession Configuration
106."aether.trustedChecksumsSource.summaryFile.originAware"BooleanIs source origin aware?true1.9.0NoSession Configuration
107."aether.updateCheckManager.sessionState"StringManages the session state, i.e. influences if the same download requests to artifacts/metadata will happen multiple times within the same RepositorySystemSession. If “enabled” will enable the session state. If “bypass” will enable bypassing (i.e. store all artifact ids/metadata ids which have been updates but not evaluating those). All other values lead to disabling the session state completely."enabled"NoSession Configuration

All properties which have yes in the column Supports Repo ID Suffix can be optionally configured specifically for a repository id. In that case the configuration property needs to be suffixed with a period followed by the repository id of the repository to configure, e.g. aether.connector.http.headers.central for repository with id central.

Property Type Conversion

If the value is not given in the target type the following conversions are applied.

FromToWith
StringbooleanBoolean.parseBoolean(...)
StringintInteger.parseInt(...)
StringlongLong.parseLong(...)
StringfloatFloat.parseFloat(...)

Set Configuration from Apache Maven

To set one of the configuration options from above just use system variables. As system variables only support String values the type conversion mentioned above needs to be leveraged. Sometimes Maven uses different default values than the Maven Resolver itself or tries to extract certain values from the settings.xml. For details refer to https://github.com/apache/maven/blob/master/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java.