[MNG-8362] Adding some missing config properties (#1861)

To have them listed in generated docs, as they were forgotten.
Also, adding a "compat" support for Maven 3.9.x property for chained reposes.

---

https://issues.apache.org/jira/browse/MNG-8362
This commit is contained in:
Tamas Cservenak 2024-11-05 17:06:57 +01:00 committed by GitHub
parent 62c94d123c
commit dfd5ec5f85
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 241 additions and 159 deletions

View File

@ -312,7 +312,7 @@ public final class Constants {
/**
* User property for chained LRM: list of "tail" local repository paths (separated by comma), to be used with
* {@code org.eclipse.aether.util.repository.ChainedLocalRepositoryManager}.
* <code>org.eclipse.aether.util.repository.ChainedLocalRepositoryManager</code>.
* Default value: <code>null</code>, no chained LRM is used.
*
* @since 3.9.0
@ -320,6 +320,17 @@ public final class Constants {
@Config
public static final String MAVEN_REPO_LOCAL_TAIL = "maven.repo.local.tail";
/**
* User property for chained LRM: whether to ignore "availability check" in tail or not. Usually you do want
* to ignore it. This property is mapped onto corresponding Resolver 2.x property, is like a synonym for it.
* Default value: <code>true</code>.
*
* @since 3.9.0
* @see <a href="https://maven.apache.org/resolver/configuration.html">Resolver Configuration: aether.chainedLocalRepository.ignoreTailAvailability</a>
*/
@Config
public static final String MAVEN_REPO_LOCAL_TAIL_IGNORE_AVAILABILITY = "maven.repo.local.tail.ignoreAvailability";
/**
* User property for reverse dependency tree. If enabled, Maven will record ".tracking" directory into local
* repository with "reverse dependency tree", essentially explaining WHY given artifact is present in local
@ -386,5 +397,28 @@ public final class Constants {
@Config(type = "java.lang.Boolean", defaultValue = "true")
public static final String MAVEN_CONSUMER_POM = "maven.consumer.pom";
/**
* User property for disabling version resolver cache.
*
* @since 3.0.0
*/
@Config(type = "java.lang.Boolean", defaultValue = "false")
public static final String MAVEN_VERSION_RESOLVER_NO_CACHE = "maven.versionResolver.noCache";
/**
* User property for overriding calculated "build number" for snapshot deploys. Caution: this property should
* be RARELY used (if used at all). It may help in special cases like "aligning" a reactor build subprojects
* build numbers to perform a "snapshot lock down". Value given here must be <code>maxRemoteBuildNumber + 1</code>
* or greater, otherwise build will fail. How the number to be obtained is left to user (ie by inspecting
* snapshot repository metadata or alike).
*
* Note: this feature is present in Maven 3.9.7 but with different key: <code>maven.buildNumber</code>. In Maven 4
* as part of cleanup effort this key was renamed to properly reflect its purpose.
*
* @since 4.0.0
*/
@Config(type = "java.lang.Integer")
public static final String MAVEN_DEPLOY_SNAPSHOT_BUILD_NUMBER = "maven.deploy.snapshot.buildNumber";
private Constants() {}
}

View File

@ -69,6 +69,7 @@ import org.eclipse.aether.util.graph.version.LowestVersionFilter;
import org.eclipse.aether.util.graph.version.PredicateVersionFilter;
import org.eclipse.aether.util.listener.ChainedRepositoryListener;
import org.eclipse.aether.util.repository.AuthenticationBuilder;
import org.eclipse.aether.util.repository.ChainedLocalRepositoryManager;
import org.eclipse.aether.util.repository.DefaultAuthenticationSelector;
import org.eclipse.aether.util.repository.DefaultMirrorSelector;
import org.eclipse.aether.util.repository.DefaultProxySelector;
@ -401,6 +402,12 @@ public class DefaultRepositorySystemSessionFactory implements RepositorySystemSe
.forEach(paths::add);
}
sessionBuilder.withLocalRepositoryBaseDirectories(paths);
// Pass over property supported by Maven 3.9.x
if (mergedProps.containsKey(Constants.MAVEN_REPO_LOCAL_TAIL_IGNORE_AVAILABILITY)) {
configProps.put(
ChainedLocalRepositoryManager.CONFIG_PROP_IGNORE_TAIL_AVAILABILITY,
mergedProps.get(Constants.MAVEN_REPO_LOCAL_TAIL_IGNORE_AVAILABILITY));
}
for (RepositorySystemSessionExtender extender : sessionExtenders.values()) {
extender.extend(request, configProps, mirrorSelector, proxySelector, authSelector);

View File

@ -29,6 +29,7 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import org.apache.maven.api.Constants;
import org.apache.maven.api.di.Inject;
import org.apache.maven.api.di.Named;
import org.apache.maven.api.di.Singleton;
@ -104,7 +105,7 @@ public class DefaultVersionResolver implements VersionResolver {
Key cacheKey = null;
RepositoryCache cache = session.getCache();
if (cache != null && !ConfigUtils.getBoolean(session, false, "aether.versionResolver.noCache")) {
if (cache != null && !ConfigUtils.getBoolean(session, false, Constants.MAVEN_VERSION_RESOLVER_NO_CACHE)) {
cacheKey = new Key(session, request);
Object obj = cache.get(session, cacheKey);

View File

@ -24,6 +24,7 @@ import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.maven.api.Constants;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.deployment.DeployRequest;
@ -46,7 +47,7 @@ class RemoteSnapshotMetadataGenerator implements MetadataGenerator {
RemoteSnapshotMetadataGenerator(RepositorySystemSession session, DeployRequest request) {
timestamp = (Date) ConfigUtils.getObject(session, new Date(), "maven.startTime");
Object bn = ConfigUtils.getObject(session, null, "maven.buildNumber");
Object bn = ConfigUtils.getObject(session, null, Constants.MAVEN_DEPLOY_SNAPSHOT_BUILD_NUMBER);
if (bn instanceof Integer) {
this.buildNumber = (Integer) bn;
} else if (bn instanceof String) {

View File

@ -16,7 +16,7 @@
# specific language governing permissions and limitations
# under the License.
#
props.count = 38
props.count = 41
props.1.key = maven.build.timestamp.format
props.1.configurationType = String
props.1.description = Build timestamp format.
@ -29,218 +29,236 @@ props.2.description = User property for enabling/disabling the consumer POM feat
props.2.defaultValue = true
props.2.since = 4.0.0
props.2.configurationSource = User properties
props.3.key = maven.ext.class.path
props.3.configurationType = String
props.3.description = Extensions class path.
props.3.key = maven.deploy.snapshot.buildNumber
props.3.configurationType = Integer
props.3.description = User property for overriding calculated "build number" for snapshot deploys. Caution: this property should be RARELY used (if used at all). It may help in special cases like "aligning" a reactor build subprojects build numbers to perform a "snapshot lock down". Value given here must be <code>maxRemoteBuildNumber + 1</code> or greater, otherwise build will fail. How the number to be obtained is left to user (ie by inspecting snapshot repository metadata or alike). Note: this feature is present in Maven 3.9.7 but with different key: <code>maven.buildNumber</code>. In Maven 4 as part of cleanup effort this key was renamed to properly reflect its purpose.
props.3.defaultValue =
props.3.since = 4.0.0
props.3.configurationSource = User properties
props.4.key = maven.home
props.4.key = maven.ext.class.path
props.4.configurationType = String
props.4.description = Maven home.
props.4.description = Extensions class path.
props.4.defaultValue =
props.4.since = 3.0.0
props.4.configurationSource = User properties
props.5.key = maven.installation.conf
props.5.key = maven.home
props.5.configurationType = String
props.5.description = Maven installation configuration directory.
props.5.defaultValue = ${maven.home}/conf
props.5.since = 4.0.0
props.5.description = Maven home.
props.5.defaultValue =
props.5.since = 3.0.0
props.5.configurationSource = User properties
props.6.key = maven.installation.extensions
props.6.key = maven.installation.conf
props.6.configurationType = String
props.6.description = Maven installation extensions.
props.6.defaultValue = ${maven.installation.conf}/extensions.xml
props.6.description = Maven installation configuration directory.
props.6.defaultValue = ${maven.home}/conf
props.6.since = 4.0.0
props.6.configurationSource = User properties
props.7.key = maven.installation.settings
props.7.key = maven.installation.extensions
props.7.configurationType = String
props.7.description = Maven installation settings.
props.7.defaultValue = ${maven.installation.conf}/settings.xml
props.7.description = Maven installation extensions.
props.7.defaultValue = ${maven.installation.conf}/extensions.xml
props.7.since = 4.0.0
props.7.configurationSource = User properties
props.8.key = maven.installation.toolchains
props.8.key = maven.installation.settings
props.8.configurationType = String
props.8.description = Maven installation toolchains.
props.8.defaultValue = ${maven.installation.conf}/toolchains.xml
props.8.description = Maven installation settings.
props.8.defaultValue = ${maven.installation.conf}/settings.xml
props.8.since = 4.0.0
props.8.configurationSource = User properties
props.9.key = maven.modelBuilder.parallelism
props.9.configurationType = Integer
props.9.description = ProjectBuilder parallelism.
props.9.defaultValue = cores/2 + 1
props.9.key = maven.installation.toolchains
props.9.configurationType = String
props.9.description = Maven installation toolchains.
props.9.defaultValue = ${maven.installation.conf}/toolchains.xml
props.9.since = 4.0.0
props.9.configurationSource = User properties
props.10.key = maven.plugin.validation
props.10.configurationType = String
props.10.description = Plugin validation level.
props.10.defaultValue = inline
props.10.since = 3.9.2
props.10.key = maven.modelBuilder.parallelism
props.10.configurationType = Integer
props.10.description = ProjectBuilder parallelism.
props.10.defaultValue = cores/2 + 1
props.10.since = 4.0.0
props.10.configurationSource = User properties
props.11.key = maven.plugin.validation.excludes
props.11.key = maven.plugin.validation
props.11.configurationType = String
props.11.description = Plugin validation exclusions.
props.11.defaultValue =
props.11.since = 3.9.6
props.11.description = Plugin validation level.
props.11.defaultValue = inline
props.11.since = 3.9.2
props.11.configurationSource = User properties
props.12.key = maven.project.conf
props.12.key = maven.plugin.validation.excludes
props.12.configurationType = String
props.12.description = Maven project configuration directory.
props.12.defaultValue = ${session.rootDirectory}/.mvn
props.12.since = 4.0.0
props.12.description = Plugin validation exclusions.
props.12.defaultValue =
props.12.since = 3.9.6
props.12.configurationSource = User properties
props.13.key = maven.project.extensions
props.13.key = maven.project.conf
props.13.configurationType = String
props.13.description = Maven project extensions.
props.13.defaultValue = ${maven.project.conf}/extensions.xml
props.13.description = Maven project configuration directory.
props.13.defaultValue = ${session.rootDirectory}/.mvn
props.13.since = 4.0.0
props.13.configurationSource = User properties
props.14.key = maven.project.settings
props.14.key = maven.project.extensions
props.14.configurationType = String
props.14.description = Maven project settings.
props.14.defaultValue = ${maven.project.conf}/settings.xml
props.14.description = Maven project extensions.
props.14.defaultValue = ${maven.project.conf}/extensions.xml
props.14.since = 4.0.0
props.14.configurationSource = User properties
props.15.key = maven.relocations.entries
props.15.key = maven.project.settings
props.15.configurationType = String
props.15.description = User controlled relocations. This property is a comma separated list of entries with the syntax <code>GAV&gt;GAV</code>. The first <code>GAV</code> can contain <code>\*</code> for any elem (so <code>\*:\*:\*</code> would mean ALL, something you don't want). The second <code>GAV</code> is either fully specified, or also can contain <code>\*</code>, then it behaves as "ordinary relocation": the coordinate is preserved from relocated artifact. Finally, if right hand <code>GAV</code> is absent (line looks like <code>GAV&gt;</code>), the left hand matching <code>GAV</code> is banned fully (from resolving). <br/> Note: the <code>&gt;</code> means project level, while <code>&gt;&gt;</code> means global (whole session level, so even plugins will get relocated artifacts) relocation. <br/> For example, <pre>maven.relocations.entries = org.foo:\*:\*>, \\<br/> org.here:\*:\*>org.there:\*:\*, \\<br/> javax.inject:javax.inject:1>>jakarta.inject:jakarta.inject:1.0.5</pre> means: 3 entries, ban <code>org.foo group</code> (exactly, so <code>org.foo.bar</code> is allowed), relocate <code>org.here</code> to <code>org.there</code> and finally globally relocate (see <code>&gt;&gt;</code> above) <code>javax.inject:javax.inject:1</code> to <code>jakarta.inject:jakarta.inject:1.0.5</code>.
props.15.defaultValue =
props.15.description = Maven project settings.
props.15.defaultValue = ${maven.project.conf}/settings.xml
props.15.since = 4.0.0
props.15.configurationSource = User properties
props.16.key = maven.repo.central
props.16.key = maven.relocations.entries
props.16.configurationType = String
props.16.description = Maven central repository URL. The property will have the value of the <code>MAVEN_REPO_CENTRAL</code> environment variable if it is defined.
props.16.defaultValue = https://repo.maven.apache.org/maven2
props.16.description = User controlled relocations. This property is a comma separated list of entries with the syntax <code>GAV&gt;GAV</code>. The first <code>GAV</code> can contain <code>\*</code> for any elem (so <code>\*:\*:\*</code> would mean ALL, something you don't want). The second <code>GAV</code> is either fully specified, or also can contain <code>\*</code>, then it behaves as "ordinary relocation": the coordinate is preserved from relocated artifact. Finally, if right hand <code>GAV</code> is absent (line looks like <code>GAV&gt;</code>), the left hand matching <code>GAV</code> is banned fully (from resolving). <br/> Note: the <code>&gt;</code> means project level, while <code>&gt;&gt;</code> means global (whole session level, so even plugins will get relocated artifacts) relocation. <br/> For example, <pre>maven.relocations.entries = org.foo:\*:\*>, \\<br/> org.here:\*:\*>org.there:\*:\*, \\<br/> javax.inject:javax.inject:1>>jakarta.inject:jakarta.inject:1.0.5</pre> means: 3 entries, ban <code>org.foo group</code> (exactly, so <code>org.foo.bar</code> is allowed), relocate <code>org.here</code> to <code>org.there</code> and finally globally relocate (see <code>&gt;&gt;</code> above) <code>javax.inject:javax.inject:1</code> to <code>jakarta.inject:jakarta.inject:1.0.5</code>.
props.16.defaultValue =
props.16.since = 4.0.0
props.16.configurationSource = User properties
props.17.key = maven.repo.local
props.17.key = maven.repo.central
props.17.configurationType = String
props.17.description = Maven local repository.
props.17.defaultValue = ${maven.user.conf}/repository
props.17.since = 3.0.0
props.17.description = Maven central repository URL. The property will have the value of the <code>MAVEN_REPO_CENTRAL</code> environment variable if it is defined.
props.17.defaultValue = https://repo.maven.apache.org/maven2
props.17.since = 4.0.0
props.17.configurationSource = User properties
props.18.key = maven.repo.local.recordReverseTree
props.18.key = maven.repo.local
props.18.configurationType = String
props.18.description = User property for reverse dependency tree. If enabled, Maven will record ".tracking" directory into local repository with "reverse dependency tree", essentially explaining WHY given artifact is present in local repository. Default: <code>false</code>, will not record anything.
props.18.defaultValue = false
props.18.since = 3.9.0
props.18.description = Maven local repository.
props.18.defaultValue = ${maven.user.conf}/repository
props.18.since = 3.0.0
props.18.configurationSource = User properties
props.19.key = maven.repo.local.tail
props.19.key = maven.repo.local.recordReverseTree
props.19.configurationType = String
props.19.description = User property for chained LRM: list of "tail" local repository paths (separated by comma), to be used with {@code org.eclipse.aether.util.repository.ChainedLocalRepositoryManager} . Default value: <code>null</code>, no chained LRM is used.
props.19.defaultValue =
props.19.description = User property for reverse dependency tree. If enabled, Maven will record ".tracking" directory into local repository with "reverse dependency tree", essentially explaining WHY given artifact is present in local repository. Default: <code>false</code>, will not record anything.
props.19.defaultValue = false
props.19.since = 3.9.0
props.19.configurationSource = User properties
props.20.key = maven.resolver.dependencyManagerTransitivity
props.20.key = maven.repo.local.tail
props.20.configurationType = String
props.20.description = User property for selecting dependency manager behaviour regarding transitive dependencies and dependency management entries in their POMs. Maven 3 targeted full backward compatibility with Maven2, hence it ignored dependency management entries in transitive dependency POMs. Maven 4 enables "transitivity" by default, hence unlike Maven2, obeys dependency management entries deep in dependency graph as well. <br/> Default: <code>"true"</code>.
props.20.defaultValue = true
props.20.since = 4.0.0
props.20.description = User property for chained LRM: list of "tail" local repository paths (separated by comma), to be used with <code>org.eclipse.aether.util.repository.ChainedLocalRepositoryManager</code>. Default value: <code>null</code>, no chained LRM is used.
props.20.defaultValue =
props.20.since = 3.9.0
props.20.configurationSource = User properties
props.21.key = maven.resolver.transport
props.21.key = maven.repo.local.tail.ignoreAvailability
props.21.configurationType = String
props.21.description = Resolver transport to use. Can be <code>default</code>, <code>wagon</code>, <code>apache</code>, <code>jdk</code> or <code>auto</code>.
props.21.defaultValue = default
props.21.since = 4.0.0
props.21.description = User property for chained LRM: whether to ignore "availability check" in tail or not. Usually you do want to ignore it. This property is mapped onto corresponding Resolver 2.x property, is like a synonym for it. Default value: <code>true</code>.
props.21.defaultValue =
props.21.since = 3.9.0
props.21.configurationSource = User properties
props.22.key = maven.style.color
props.22.key = maven.resolver.dependencyManagerTransitivity
props.22.configurationType = String
props.22.description = Maven output color mode. Allowed values are <code>auto</code>, <code>always</code>, <code>never</code>.
props.22.defaultValue = auto
props.22.description = User property for selecting dependency manager behaviour regarding transitive dependencies and dependency management entries in their POMs. Maven 3 targeted full backward compatibility with Maven2, hence it ignored dependency management entries in transitive dependency POMs. Maven 4 enables "transitivity" by default, hence unlike Maven2, obeys dependency management entries deep in dependency graph as well. <br/> Default: <code>"true"</code>.
props.22.defaultValue = true
props.22.since = 4.0.0
props.22.configurationSource = User properties
props.23.key = maven.style.debug
props.23.key = maven.resolver.transport
props.23.configurationType = String
props.23.description = Color style for debug messages.
props.23.defaultValue = bold,f:cyan
props.23.description = Resolver transport to use. Can be <code>default</code>, <code>wagon</code>, <code>apache</code>, <code>jdk</code> or <code>auto</code>.
props.23.defaultValue = default
props.23.since = 4.0.0
props.23.configurationSource = User properties
props.24.key = maven.style.error
props.24.key = maven.style.color
props.24.configurationType = String
props.24.description = Color style for error messages.
props.24.defaultValue = bold,f:red
props.24.description = Maven output color mode. Allowed values are <code>auto</code>, <code>always</code>, <code>never</code>.
props.24.defaultValue = auto
props.24.since = 4.0.0
props.24.configurationSource = User properties
props.25.key = maven.style.failure
props.25.key = maven.style.debug
props.25.configurationType = String
props.25.description = Color style for failure messages.
props.25.defaultValue = bold,f:red
props.25.description = Color style for debug messages.
props.25.defaultValue = bold,f:cyan
props.25.since = 4.0.0
props.25.configurationSource = User properties
props.26.key = maven.style.info
props.26.key = maven.style.error
props.26.configurationType = String
props.26.description = Color style for info messages.
props.26.defaultValue = bold,f:blue
props.26.description = Color style for error messages.
props.26.defaultValue = bold,f:red
props.26.since = 4.0.0
props.26.configurationSource = User properties
props.27.key = maven.style.mojo
props.27.key = maven.style.failure
props.27.configurationType = String
props.27.description = Color style for mojo messages.
props.27.defaultValue = f:green
props.27.description = Color style for failure messages.
props.27.defaultValue = bold,f:red
props.27.since = 4.0.0
props.27.configurationSource = User properties
props.28.key = maven.style.project
props.28.key = maven.style.info
props.28.configurationType = String
props.28.description = Color style for project messages.
props.28.defaultValue = f:cyan
props.28.description = Color style for info messages.
props.28.defaultValue = bold,f:blue
props.28.since = 4.0.0
props.28.configurationSource = User properties
props.29.key = maven.style.strong
props.29.key = maven.style.mojo
props.29.configurationType = String
props.29.description = Color style for strong messages.
props.29.defaultValue = bold
props.29.description = Color style for mojo messages.
props.29.defaultValue = f:green
props.29.since = 4.0.0
props.29.configurationSource = User properties
props.30.key = maven.style.success
props.30.key = maven.style.project
props.30.configurationType = String
props.30.description = Color style for success messages.
props.30.defaultValue = bold,f:green
props.30.description = Color style for project messages.
props.30.defaultValue = f:cyan
props.30.since = 4.0.0
props.30.configurationSource = User properties
props.31.key = maven.style.trace
props.31.key = maven.style.strong
props.31.configurationType = String
props.31.description = Color style for trace messages.
props.31.defaultValue = bold,f:magenta
props.31.description = Color style for strong messages.
props.31.defaultValue = bold
props.31.since = 4.0.0
props.31.configurationSource = User properties
props.32.key = maven.style.transfer
props.32.key = maven.style.success
props.32.configurationType = String
props.32.description = Color style for transfer messages.
props.32.defaultValue = f:bright-black
props.32.description = Color style for success messages.
props.32.defaultValue = bold,f:green
props.32.since = 4.0.0
props.32.configurationSource = User properties
props.33.key = maven.style.warning
props.33.key = maven.style.trace
props.33.configurationType = String
props.33.description = Color style for warning messages.
props.33.defaultValue = bold,f:yellow
props.33.description = Color style for trace messages.
props.33.defaultValue = bold,f:magenta
props.33.since = 4.0.0
props.33.configurationSource = User properties
props.34.key = maven.user.conf
props.34.key = maven.style.transfer
props.34.configurationType = String
props.34.description = Maven user configuration directory.
props.34.defaultValue = ${user.home}/.m2
props.34.description = Color style for transfer messages.
props.34.defaultValue = f:bright-black
props.34.since = 4.0.0
props.34.configurationSource = User properties
props.35.key = maven.user.extensions
props.35.key = maven.style.warning
props.35.configurationType = String
props.35.description = Maven user extensions.
props.35.defaultValue = ${maven.user.conf}/extensions.xml
props.35.description = Color style for warning messages.
props.35.defaultValue = bold,f:yellow
props.35.since = 4.0.0
props.35.configurationSource = User properties
props.36.key = maven.user.settings
props.36.key = maven.user.conf
props.36.configurationType = String
props.36.description = Maven user settings.
props.36.defaultValue = ${maven.user.conf}/settings.xml
props.36.description = Maven user configuration directory.
props.36.defaultValue = ${user.home}/.m2
props.36.since = 4.0.0
props.36.configurationSource = User properties
props.37.key = maven.user.toolchains
props.37.key = maven.user.extensions
props.37.configurationType = String
props.37.description = Maven user toolchains.
props.37.defaultValue = ${maven.user.home}/toolchains.xml
props.37.description = Maven user extensions.
props.37.defaultValue = ${maven.user.conf}/extensions.xml
props.37.since = 4.0.0
props.37.configurationSource = User properties
props.38.key = maven.versionFilters
props.38.key = maven.user.settings
props.38.configurationType = String
props.38.description = User property for version filters expression, a semicolon separated list of filters to apply. By default, no version filter is applied (like in Maven 3). <br/> Supported filters: <ul> <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>"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 full range), snapshots are banned if root project is not a snapshot, and if range for <code>org.foo:bar</code> is being processed, version 1 is omitted.
props.38.defaultValue =
props.38.description = Maven user settings.
props.38.defaultValue = ${maven.user.conf}/settings.xml
props.38.since = 4.0.0
props.38.configurationSource = User properties
props.39.key = maven.user.toolchains
props.39.configurationType = String
props.39.description = Maven user toolchains.
props.39.defaultValue = ${maven.user.home}/toolchains.xml
props.39.since = 4.0.0
props.39.configurationSource = User properties
props.40.key = maven.versionFilters
props.40.configurationType = String
props.40.description = User property for version filters expression, a semicolon separated list of filters to apply. By default, no version filter is applied (like in Maven 3). <br/> Supported filters: <ul> <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>"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 full range), snapshots are banned if root project is not a snapshot, and if range for <code>org.foo:bar</code> is being processed, version 1 is omitted.
props.40.defaultValue =
props.40.since = 4.0.0
props.40.configurationSource = User properties
props.41.key = maven.versionResolver.noCache
props.41.configurationType = Boolean
props.41.description = User property for disabling version resolver cache.
props.41.defaultValue = false
props.41.since = 3.0.0
props.41.configurationSource = User properties

View File

@ -29,6 +29,12 @@ props:
defaultValue: true
since: 4.0.0
configurationSource: User properties
- key: maven.deploy.snapshot.buildNumber
configurationType: Integer
description: "User property for overriding calculated \"build number\" for snapshot deploys. Caution: this property should be RARELY used (if used at all). It may help in special cases like \"aligning\" a reactor build subprojects build numbers to perform a \"snapshot lock down\". Value given here must be <code>maxRemoteBuildNumber + 1</code> or greater, otherwise build will fail. How the number to be obtained is left to user (ie by inspecting snapshot repository metadata or alike). Note: this feature is present in Maven 3.9.7 but with different key: <code>maven.buildNumber</code>. In Maven 4 as part of cleanup effort this key was renamed to properly reflect its purpose."
defaultValue:
since: 4.0.0
configurationSource: User properties
- key: maven.ext.class.path
configurationType: String
description: "Extensions class path."
@ -126,7 +132,13 @@ props:
configurationSource: User properties
- key: maven.repo.local.tail
configurationType: String
description: "User property for chained LRM: list of \"tail\" local repository paths (separated by comma), to be used with {@code org.eclipse.aether.util.repository.ChainedLocalRepositoryManager} . Default value: <code>null</code>, no chained LRM is used."
description: "User property for chained LRM: list of \"tail\" local repository paths (separated by comma), to be used with <code>org.eclipse.aether.util.repository.ChainedLocalRepositoryManager</code>. Default value: <code>null</code>, no chained LRM is used."
defaultValue:
since: 3.9.0
configurationSource: User properties
- key: maven.repo.local.tail.ignoreAvailability
configurationType: String
description: "User property for chained LRM: whether to ignore \"availability check\" in tail or not. Usually you do want to ignore it. This property is mapped onto corresponding Resolver 2.x property, is like a synonym for it. Default value: <code>true</code>."
defaultValue:
since: 3.9.0
configurationSource: User properties
@ -244,3 +256,9 @@ props:
defaultValue:
since: 4.0.0
configurationSource: User properties
- key: maven.versionResolver.noCache
configurationType: Boolean
description: "User property for disabling version resolver cache."
defaultValue: false
since: 3.0.0
configurationSource: User properties

View File

@ -27,40 +27,43 @@ under the License.
| --- | --- | --- | --- | --- | --- | --- |
| 1. | `maven.build.timestamp.format` | `String` | Build timestamp format. | `yyyy-MM-dd'T'HH:mm:ssXXX` | 3.0.0 | Model properties |
| 2. | `maven.consumer.pom` | `Boolean` | User property for enabling/disabling the consumer POM feature. | `true` | 4.0.0 | User properties |
| 3. | `maven.ext.class.path` | `String` | Extensions class path. | - | | User properties |
| 4. | `maven.home` | `String` | Maven home. | - | 3.0.0 | User properties |
| 5. | `maven.installation.conf` | `String` | Maven installation configuration directory. | `${maven.home}/conf` | 4.0.0 | User properties |
| 6. | `maven.installation.extensions` | `String` | Maven installation extensions. | `${maven.installation.conf}/extensions.xml` | 4.0.0 | User properties |
| 7. | `maven.installation.settings` | `String` | Maven installation settings. | `${maven.installation.conf}/settings.xml` | 4.0.0 | User properties |
| 8. | `maven.installation.toolchains` | `String` | Maven installation toolchains. | `${maven.installation.conf}/toolchains.xml` | 4.0.0 | User properties |
| 9. | `maven.modelBuilder.parallelism` | `Integer` | ProjectBuilder parallelism. | `cores/2 + 1` | 4.0.0 | User properties |
| 10. | `maven.plugin.validation` | `String` | Plugin validation level. | `inline` | 3.9.2 | User properties |
| 11. | `maven.plugin.validation.excludes` | `String` | Plugin validation exclusions. | - | 3.9.6 | User properties |
| 12. | `maven.project.conf` | `String` | Maven project configuration directory. | `${session.rootDirectory}/.mvn` | 4.0.0 | User properties |
| 13. | `maven.project.extensions` | `String` | Maven project extensions. | `${maven.project.conf}/extensions.xml` | 4.0.0 | User properties |
| 14. | `maven.project.settings` | `String` | Maven project settings. | `${maven.project.conf}/settings.xml` | 4.0.0 | User properties |
| 15. | `maven.relocations.entries` | `String` | User controlled relocations. This property is a comma separated list of entries with the syntax <code>GAV&gt;GAV</code>. The first <code>GAV</code> can contain <code>\*</code> for any elem (so <code>\*:\*:\*</code> would mean ALL, something you don't want). The second <code>GAV</code> is either fully specified, or also can contain <code>\*</code>, then it behaves as "ordinary relocation": the coordinate is preserved from relocated artifact. Finally, if right hand <code>GAV</code> is absent (line looks like <code>GAV&gt;</code>), the left hand matching <code>GAV</code> is banned fully (from resolving). <br/> Note: the <code>&gt;</code> means project level, while <code>&gt;&gt;</code> means global (whole session level, so even plugins will get relocated artifacts) relocation. <br/> For example, <pre>maven.relocations.entries = org.foo:\*:\*>, \\<br/> org.here:\*:\*>org.there:\*:\*, \\<br/> javax.inject:javax.inject:1>>jakarta.inject:jakarta.inject:1.0.5</pre> means: 3 entries, ban <code>org.foo group</code> (exactly, so <code>org.foo.bar</code> is allowed), relocate <code>org.here</code> to <code>org.there</code> and finally globally relocate (see <code>&gt;&gt;</code> above) <code>javax.inject:javax.inject:1</code> to <code>jakarta.inject:jakarta.inject:1.0.5</code>. | - | 4.0.0 | User properties |
| 16. | `maven.repo.central` | `String` | Maven central repository URL. The property will have the value of the <code>MAVEN_REPO_CENTRAL</code> environment variable if it is defined. | `https://repo.maven.apache.org/maven2` | 4.0.0 | User properties |
| 17. | `maven.repo.local` | `String` | Maven local repository. | `${maven.user.conf}/repository` | 3.0.0 | User properties |
| 18. | `maven.repo.local.recordReverseTree` | `String` | User property for reverse dependency tree. If enabled, Maven will record ".tracking" directory into local repository with "reverse dependency tree", essentially explaining WHY given artifact is present in local repository. Default: <code>false</code>, will not record anything. | `false` | 3.9.0 | User properties |
| 19. | `maven.repo.local.tail` | `String` | User property for chained LRM: list of "tail" local repository paths (separated by comma), to be used with {@code org.eclipse.aether.util.repository.ChainedLocalRepositoryManager} . Default value: <code>null</code>, no chained LRM is used. | - | 3.9.0 | User properties |
| 20. | `maven.resolver.dependencyManagerTransitivity` | `String` | User property for selecting dependency manager behaviour regarding transitive dependencies and dependency management entries in their POMs. Maven 3 targeted full backward compatibility with Maven2, hence it ignored dependency management entries in transitive dependency POMs. Maven 4 enables "transitivity" by default, hence unlike Maven2, obeys dependency management entries deep in dependency graph as well. <br/> Default: <code>"true"</code>. | `true` | 4.0.0 | User properties |
| 21. | `maven.resolver.transport` | `String` | Resolver transport to use. Can be <code>default</code>, <code>wagon</code>, <code>apache</code>, <code>jdk</code> or <code>auto</code>. | `default` | 4.0.0 | User properties |
| 22. | `maven.style.color` | `String` | Maven output color mode. Allowed values are <code>auto</code>, <code>always</code>, <code>never</code>. | `auto` | 4.0.0 | User properties |
| 23. | `maven.style.debug` | `String` | Color style for debug messages. | `bold,f:cyan` | 4.0.0 | User properties |
| 24. | `maven.style.error` | `String` | Color style for error messages. | `bold,f:red` | 4.0.0 | User properties |
| 25. | `maven.style.failure` | `String` | Color style for failure messages. | `bold,f:red` | 4.0.0 | User properties |
| 26. | `maven.style.info` | `String` | Color style for info messages. | `bold,f:blue` | 4.0.0 | User properties |
| 27. | `maven.style.mojo` | `String` | Color style for mojo messages. | `f:green` | 4.0.0 | User properties |
| 28. | `maven.style.project` | `String` | Color style for project messages. | `f:cyan` | 4.0.0 | User properties |
| 29. | `maven.style.strong` | `String` | Color style for strong messages. | `bold` | 4.0.0 | User properties |
| 30. | `maven.style.success` | `String` | Color style for success messages. | `bold,f:green` | 4.0.0 | User properties |
| 31. | `maven.style.trace` | `String` | Color style for trace messages. | `bold,f:magenta` | 4.0.0 | User properties |
| 32. | `maven.style.transfer` | `String` | Color style for transfer messages. | `f:bright-black` | 4.0.0 | User properties |
| 33. | `maven.style.warning` | `String` | Color style for warning messages. | `bold,f:yellow` | 4.0.0 | User properties |
| 34. | `maven.user.conf` | `String` | Maven user configuration directory. | `${user.home}/.m2` | 4.0.0 | User properties |
| 35. | `maven.user.extensions` | `String` | Maven user extensions. | `${maven.user.conf}/extensions.xml` | 4.0.0 | User properties |
| 36. | `maven.user.settings` | `String` | Maven user settings. | `${maven.user.conf}/settings.xml` | 4.0.0 | User properties |
| 37. | `maven.user.toolchains` | `String` | Maven user toolchains. | `${maven.user.home}/toolchains.xml` | 4.0.0 | User properties |
| 38. | `maven.versionFilters` | `String` | User property for version filters expression, a semicolon separated list of filters to apply. By default, no version filter is applied (like in Maven 3). <br/> Supported filters: <ul> <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>"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 full range), snapshots are banned if root project is not a snapshot, and if range for <code>org.foo:bar</code> is being processed, version 1 is omitted. | - | 4.0.0 | User properties |
| 3. | `maven.deploy.snapshot.buildNumber` | `Integer` | User property for overriding calculated "build number" for snapshot deploys. Caution: this property should be RARELY used (if used at all). It may help in special cases like "aligning" a reactor build subprojects build numbers to perform a "snapshot lock down". Value given here must be <code>maxRemoteBuildNumber + 1</code> or greater, otherwise build will fail. How the number to be obtained is left to user (ie by inspecting snapshot repository metadata or alike). Note: this feature is present in Maven 3.9.7 but with different key: <code>maven.buildNumber</code>. In Maven 4 as part of cleanup effort this key was renamed to properly reflect its purpose. | - | 4.0.0 | User properties |
| 4. | `maven.ext.class.path` | `String` | Extensions class path. | - | | User properties |
| 5. | `maven.home` | `String` | Maven home. | - | 3.0.0 | User properties |
| 6. | `maven.installation.conf` | `String` | Maven installation configuration directory. | `${maven.home}/conf` | 4.0.0 | User properties |
| 7. | `maven.installation.extensions` | `String` | Maven installation extensions. | `${maven.installation.conf}/extensions.xml` | 4.0.0 | User properties |
| 8. | `maven.installation.settings` | `String` | Maven installation settings. | `${maven.installation.conf}/settings.xml` | 4.0.0 | User properties |
| 9. | `maven.installation.toolchains` | `String` | Maven installation toolchains. | `${maven.installation.conf}/toolchains.xml` | 4.0.0 | User properties |
| 10. | `maven.modelBuilder.parallelism` | `Integer` | ProjectBuilder parallelism. | `cores/2 + 1` | 4.0.0 | User properties |
| 11. | `maven.plugin.validation` | `String` | Plugin validation level. | `inline` | 3.9.2 | User properties |
| 12. | `maven.plugin.validation.excludes` | `String` | Plugin validation exclusions. | - | 3.9.6 | User properties |
| 13. | `maven.project.conf` | `String` | Maven project configuration directory. | `${session.rootDirectory}/.mvn` | 4.0.0 | User properties |
| 14. | `maven.project.extensions` | `String` | Maven project extensions. | `${maven.project.conf}/extensions.xml` | 4.0.0 | User properties |
| 15. | `maven.project.settings` | `String` | Maven project settings. | `${maven.project.conf}/settings.xml` | 4.0.0 | User properties |
| 16. | `maven.relocations.entries` | `String` | User controlled relocations. This property is a comma separated list of entries with the syntax <code>GAV&gt;GAV</code>. The first <code>GAV</code> can contain <code>\*</code> for any elem (so <code>\*:\*:\*</code> would mean ALL, something you don't want). The second <code>GAV</code> is either fully specified, or also can contain <code>\*</code>, then it behaves as "ordinary relocation": the coordinate is preserved from relocated artifact. Finally, if right hand <code>GAV</code> is absent (line looks like <code>GAV&gt;</code>), the left hand matching <code>GAV</code> is banned fully (from resolving). <br/> Note: the <code>&gt;</code> means project level, while <code>&gt;&gt;</code> means global (whole session level, so even plugins will get relocated artifacts) relocation. <br/> For example, <pre>maven.relocations.entries = org.foo:\*:\*>, \\<br/> org.here:\*:\*>org.there:\*:\*, \\<br/> javax.inject:javax.inject:1>>jakarta.inject:jakarta.inject:1.0.5</pre> means: 3 entries, ban <code>org.foo group</code> (exactly, so <code>org.foo.bar</code> is allowed), relocate <code>org.here</code> to <code>org.there</code> and finally globally relocate (see <code>&gt;&gt;</code> above) <code>javax.inject:javax.inject:1</code> to <code>jakarta.inject:jakarta.inject:1.0.5</code>. | - | 4.0.0 | User properties |
| 17. | `maven.repo.central` | `String` | Maven central repository URL. The property will have the value of the <code>MAVEN_REPO_CENTRAL</code> environment variable if it is defined. | `https://repo.maven.apache.org/maven2` | 4.0.0 | User properties |
| 18. | `maven.repo.local` | `String` | Maven local repository. | `${maven.user.conf}/repository` | 3.0.0 | User properties |
| 19. | `maven.repo.local.recordReverseTree` | `String` | User property for reverse dependency tree. If enabled, Maven will record ".tracking" directory into local repository with "reverse dependency tree", essentially explaining WHY given artifact is present in local repository. Default: <code>false</code>, will not record anything. | `false` | 3.9.0 | User properties |
| 20. | `maven.repo.local.tail` | `String` | User property for chained LRM: list of "tail" local repository paths (separated by comma), to be used with <code>org.eclipse.aether.util.repository.ChainedLocalRepositoryManager</code>. Default value: <code>null</code>, no chained LRM is used. | - | 3.9.0 | User properties |
| 21. | `maven.repo.local.tail.ignoreAvailability` | `String` | User property for chained LRM: whether to ignore "availability check" in tail or not. Usually you do want to ignore it. This property is mapped onto corresponding Resolver 2.x property, is like a synonym for it. Default value: <code>true</code>. | - | 3.9.0 | User properties |
| 22. | `maven.resolver.dependencyManagerTransitivity` | `String` | User property for selecting dependency manager behaviour regarding transitive dependencies and dependency management entries in their POMs. Maven 3 targeted full backward compatibility with Maven2, hence it ignored dependency management entries in transitive dependency POMs. Maven 4 enables "transitivity" by default, hence unlike Maven2, obeys dependency management entries deep in dependency graph as well. <br/> Default: <code>"true"</code>. | `true` | 4.0.0 | User properties |
| 23. | `maven.resolver.transport` | `String` | Resolver transport to use. Can be <code>default</code>, <code>wagon</code>, <code>apache</code>, <code>jdk</code> or <code>auto</code>. | `default` | 4.0.0 | User properties |
| 24. | `maven.style.color` | `String` | Maven output color mode. Allowed values are <code>auto</code>, <code>always</code>, <code>never</code>. | `auto` | 4.0.0 | User properties |
| 25. | `maven.style.debug` | `String` | Color style for debug messages. | `bold,f:cyan` | 4.0.0 | User properties |
| 26. | `maven.style.error` | `String` | Color style for error messages. | `bold,f:red` | 4.0.0 | User properties |
| 27. | `maven.style.failure` | `String` | Color style for failure messages. | `bold,f:red` | 4.0.0 | User properties |
| 28. | `maven.style.info` | `String` | Color style for info messages. | `bold,f:blue` | 4.0.0 | User properties |
| 29. | `maven.style.mojo` | `String` | Color style for mojo messages. | `f:green` | 4.0.0 | User properties |
| 30. | `maven.style.project` | `String` | Color style for project messages. | `f:cyan` | 4.0.0 | User properties |
| 31. | `maven.style.strong` | `String` | Color style for strong messages. | `bold` | 4.0.0 | User properties |
| 32. | `maven.style.success` | `String` | Color style for success messages. | `bold,f:green` | 4.0.0 | User properties |
| 33. | `maven.style.trace` | `String` | Color style for trace messages. | `bold,f:magenta` | 4.0.0 | User properties |
| 34. | `maven.style.transfer` | `String` | Color style for transfer messages. | `f:bright-black` | 4.0.0 | User properties |
| 35. | `maven.style.warning` | `String` | Color style for warning messages. | `bold,f:yellow` | 4.0.0 | User properties |
| 36. | `maven.user.conf` | `String` | Maven user configuration directory. | `${user.home}/.m2` | 4.0.0 | User properties |
| 37. | `maven.user.extensions` | `String` | Maven user extensions. | `${maven.user.conf}/extensions.xml` | 4.0.0 | User properties |
| 38. | `maven.user.settings` | `String` | Maven user settings. | `${maven.user.conf}/settings.xml` | 4.0.0 | User properties |
| 39. | `maven.user.toolchains` | `String` | Maven user toolchains. | `${maven.user.home}/toolchains.xml` | 4.0.0 | User properties |
| 40. | `maven.versionFilters` | `String` | User property for version filters expression, a semicolon separated list of filters to apply. By default, no version filter is applied (like in Maven 3). <br/> Supported filters: <ul> <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>"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 full range), snapshots are banned if root project is not a snapshot, and if range for <code>org.foo:bar</code> is being processed, version 1 is omitted. | - | 4.0.0 | User properties |
| 41. | `maven.versionResolver.noCache` | `Boolean` | User property for disabling version resolver cache. | `false` | 3.0.0 | User properties |