Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Ivy 2.0: Released As An Apache Project

Ivy 2.0: Released As An Apache Project

This item in japanese

Ivy, a tool for managing (recording, tracking, resolving and reporting) project dependencies which provides tight integration with Apache Ant, has released its 2.0 beta version. This is the first release as an Apache project, it brings enhanced compatibility with Maven 2 repositories, improved concurrency support and a few other significant changes. According to the release notes Ivy is characterized by:

  • flexibility and configurability - it is process agnostic and not tied to any methodology or structure
  • tight integration with Ant - it provides various Ant tasks ranging from dependency resolution to dependency reporting and publication, while available as a standalone tool as well.

Along with numerous bug fixes and updates to the tutorials to work with version 2.0, other major changes as part of this release are as follows:

  • Configuration replaced by settings - to eliminate some confusion, settings (used to customize Ivy) are separated from configuration (used for module configurations).
  • Review of settings loading - the deprecated configure task is replaced by a settings data type which allows the usage of several settings in one Ant build script.
  • ivyrep no longer the default public resolver - it has been replaced by ibiblio Maven 2 repository.
  • Relative path resolution - where relative paths were used for configuration file inclusion, the dependency resolution might be affected, as path resolution in 2.0, is done relative to the Ivy file in which the configurations are included vs. the current directory.

Ivy 2.0 is compatible with prior releases as long as custom plugins are not being used. As the prior versions have been released as Jayasoft projects, the new 2.0 version brings with it a change in package names, from fr.jayasoft.Ivy to org.apache.ivy.

Although Ivy has increased its integration with Maven 2 repositories, the project leads are very specific about the main differences between the two products and how Ivy can provide a viable alternative to the dependency management features present in Maven 2. Below are a few highlights:

Often compared side by side, Maven 2 and Ivy are actually not the same type of tools. While Ivy offers only dependency management capabilities, Maven 2 is a software project management and comprehension tool and can manage build, reporting and documentation as well as dependencies from a central piece of information. Ant + Ivy 2.0 might be a more suitable comparison to Maven 2.

Conflict management - the ability to deal with conflicts when dealing with transitive dependencies - is handled differently by the two tools. Ivy allows for customization of conflict managers and rules by modules while Maven 2's conflict management is based on the nearest definition (i.e. a module depending on foo 1.0 leads to none of the module's dependencies being able to use foo 1.1).

Configuration of dependencies in Maven 2 is handled through a concept called scope. A dependency in Maven 2 is limited to being defined as part of either a test or a build time scope. Ivy provides more customization options through the ability to create multiple configuration mappings which tie each configuration (a declaration of the needed build artifacts) to the dependencies on other modules.

The Ivy documentation is also presented in the comparison FAQ as being more extensive, including a large number of examples and tutorials, compared to Maven 2's limited documentation related to dependency management. For enterprises that can not use public repositories and have large investments in Ant-based build systems, Ivy's support for the creation of enterprise repositories and tight integration with Ant are other features that make Ivy a viable dependency management alternative to Maven 2.

Rate this Article