conflicts

Tag: conflicts Parent: ivy-module

(since 2.0) the conflicts section is deprecated. Use 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 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

Element Description Cardinality

manager

declares a conflict manager for this module

1..n