Java has no real support for working with versioned libraries as dependencies. We cannot express in Java whether our class depends on
lib- 2.0.jar, for example. There are some open source solutions that deal with dependencies and allow us to express whether our Java code depends on
lib- 1.0.jar or
lib-2.0.jar. The most popular are Maven and Apache Ivy. Maven is a complete build tool and has a mechanism for dependency management. Ivy is only about dependency management.
Both tools support repositories where versioned libraries are stored together with metadata about these libraries. A library can have dependencies on other libraries and is described in the metadata of the library. The metadata is described in the descriptor XML files. Ivy fully supports Maven descriptor files and repositories; it also adds some extra functionality. Therefore with Ivy, you get what you would with Maven, and then some more. This is why Gradle uses the Ivy API under the...