////
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at

     https://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
////

*Tag:* override *Parent:* link:../ivyfile/dependencies{outfilesuffix}[dependencies]

[*__since 2.0__*]

Specify an override mediation rule, overriding the revision and/or branch requested for a transitive dependency.

This can be useful when a direct dependency is bringing a transitive dependency for which you want to change the revision, without actually declaring a dependency on it (because the module doesn't actually depend on it) and without using conflict management for this purpose (maybe because there is no conflict at all, or because you want to bypass conflict management for this particular transitive dependency).

Overriding is done before any else, in a phase called dependency descriptor mediation. The transitive dependency then behaves exactly as if it were declared with the new value.

Note that even though no attribute is required, it makes no sense to set no attributes at all. It would mean that overriding is triggered for all transitive dependencies, but doesn't override anything. Most of the time, at least org or module should be set to override only a subset of transitive dependencies, and at least branch or rev should be set to actually override something.

== Attributes

[options="header",cols="15%,50%,35%"]
|=======
|Attribute|Description|Required
|org|the name, or an expression matching the name of organisation to which overriding should be applied (see matcher attribute below)|No, defaults to `$$*$$` (match all)
|module|the name, or an expression matching the name of module to which overriding should be applied (see matcher attribute below)|No, defaults to `$$*$$` (match all)
|branch|the branch to set for all the overridden dependency descriptors|No, by default branch is not overridden
|rev|the revision to set for all the overridden dependency descriptors|No, by default revision is not overridden
|matcher|the link:../concept{outfilesuffix}#matcher[matcher] to use to match the modules for which the conflict manager should be used|No, defaults to `exact`
|=======
