mirror of https://github.com/apache/ant-ivy
55 lines
2.9 KiB
Plaintext
55 lines
2.9 KiB
Plaintext
////
|
|
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:* conflicts *Parent:* link:../ivyfile{outfilesuffix}[ivy-module]
|
|
|
|
(*__since 2.0__*) The conflicts section is deprecated. Use link:../ivyfile/conflict{outfilesuffix}[conflict] instead.
|
|
|
|
Container for conflict manager elements, used to indicate how conflicts should be resolved for this module.
|
|
|
|
The list of built-in conflict managers available is listed in the link:../settings/conflict-managers{outfilesuffix}[conflict manager settings page].
|
|
|
|
Conflict managers are used during the resolve operation, i.e. when Ivy analyses the graph of dependencies
|
|
and downloads corresponding Ivy files and artifacts. Managing conflict at resolve time
|
|
minimizes downloads: when a module is evicted by a conflict manager, it is not downloaded.
|
|
|
|
There are two things optimized during conflict resolution: download of artifacts and download
|
|
of Ivy files. The first is always ensured by Ivy, i.e. artifacts of a module evicted will never
|
|
be downloaded. The second is not as simple to handle because in order to know what the conflicts are
|
|
Ivy needs to know the dependency graph, and in order to know the dependency graph, it has to download
|
|
Ivy files. But Ivy is highly optimized for this too, and it tries to evict modules as soon as possible.
|
|
|
|
That's why the order of dependencies is important for download optimization. Indeed Ivy
|
|
traverses the dependency graph in the order in which dependencies are declared in the Ivy files,
|
|
and each time it encounters a dependency on a module, it first checks if there is a conflict on this module,
|
|
and if this is the case, it asks the conflict manager to resolve the conflict. Then if the module is evicted,
|
|
it does not download its Ivy file, and the whole branch is not traversed, which can save
|
|
a lot of time.
|
|
|
|
If this container is not present, a default conflict manager is used for all modules. The current default conflict manager is the `latest-revision` conflict manager.
|
|
|
|
== Child elements
|
|
|
|
|
|
[options="header",cols="20%,60%,20%"]
|
|
|=======
|
|
|Element|Description|Cardinality
|
|
|link:../ivyfile/manager{outfilesuffix}[manager]|declares a conflict manager for this module|1..n
|
|
|=======
|