Overview
Ivy is a free java based dependency manager, with powerful features such as transitive dependencies, ant integration, maven repository compatibility, continuous integration, html reports and many more.After several months of development, users feedback and testing, Ivy 1.0 is available !
Apart its strong dependency management engine, Ivy also benefits from a growing user community, a public repository of common ivy files, an evolving set of surrounding tools and plugins, and professional quality services directly from the authors.
Main features
- simple to use
- extremely flexible
- easily extensible
- high performances
- integrated with ant
- ready to use with maven ibiblio repository
- transitive dependencies
- eases continuous integration
- publishing handling
- clean dependency reports
- heavily tested
- strong conflict management
- professional support
- make your software component a lot simpler to use
- free (BSD license) !
Testimonials
"Now that Ivy 1.0 is out, I’d strongly encourage every Java developer to pull it down and consider using it to manage dependencies in their Ant builds. As far as I’m concerned, it’s a complete no-brainer." Read moreColin Sampaleanu, core developer of Spring
"Ivy's a great library... I've just gone through and implemented a multi-module build using Ivy for full transitive dependency management..." Read more
"Currently, our application uses more than 40 3rdparty jars. [...] With Ivy, I now have a full accounting of what libraries our project relies on directly. [...] We now have clear understanding of our dependency tree" Read more
Scott Haug, core developer of jobster.com
Tools and plugins
Great tools and plugins help you leverage the power of Ivy:Ivy CruiseControl Plugin let you integrate ivy in the famous continuous integration tool from thoughtworks: cruisecontrol.
Ivy Eclipse UI strongly help eclipse users to write their ivy files, with structural and data completion.
Coming soon:
Subversion Dependency Resolver, let you use subversion to store your libraries
Ivy Eclipse Classpath, let you use ivy files as a library container
Main benefits
Simplicity
For simple cases, ivy is really simple to use. Declare your dependencies, and that's all. See the very simple example below to check yourself.Ivy can thus be used to bring the dependency management feature of maven to ant build file, for those of you who already use ant and who do not want to setup a maven project. But Ivy does not stop here, as you can see in the following main benefits...
Transitive dependencies management
Imagine you have a component that you often reuse in your software developments. Imagine that this component has itself dependencies. Then with classical dependencies management, each time you use this component in your software you have to declare it as a dependency, but also all its dependencies.With ivy it's different: you simply write a dependency file once for the component, declaring its own dependencies, then anytime you want to use this component you simply have to declare a dependency on it.
And this is even more powerful if the component your software depends on changes of dependencies during its own development. Then, without ivy, you have to maintain all your components dependencies declaration each time the dependencies of this component change. With ivy, you update the ivy file of the component and that's it ! Note: if you want to quickly start using this feature or simply see it in action with real world examples, check the official repository: ivyrep
Continuous integration ready
Are you working in a continuous integration environment ? No ? You should ;-)If you are working in a continuous integration environment, and if you have many projects that depend one on each other, then you are maybe experiencing the dependency management nightmare... Fortunately, ivy is there to help !
With ivy you can declare that a component depends on the latest version of another component. Knowing that, ivy will search for the latest version of the dependency whenever you ask it to do so. This latest version is computed by ivy simply either by checking the date of the dependency versions or by comparing versions as text (either lexicographically or with an algorithm close to the one used in php version_compare function). You have nothing special to do to benefit from this feature: install ivy, configure it, write your dependency files, and that's it !
Simple example
The simplest way to use ivy is to call it from your ant build file. Here's the 3 steps easiest way to first use it, assuming you already have ant installed:1. Download and install
Download the latest version here, unpack the downloaded zip file wherever you want, and copy the ivy jar file in your ant lib directory (ANT_HOME/lib).2. Describe your dependencies
To describe your dependencies, you just have to create a file named ivy.xml in your project base directory (as known by ant).Write your dependencies description in this file, as here :
<ivy-module version="1.0">
<info organisation="mycompany" module="mycomponent"/>
<dependencies>
<dependency name="commons-lang" rev="2.0"/>
<dependency name="log4j" rev="1.2.8"/>
</dependencies>
</ivy-module>
The version given at the beginning of the file is the ivy file specification
version, it should thus always be 1.0 with current ivy version.In the info tag you describe the component for which you are describing dependencies.
Then you just have to list the dependencies your component has. In order to work with as little configuration as possible, the name of the dependencies should be the name of the directory under maven ibiblio repository, and the revision should be the one found in the jars directory in this same repository.
3. Call ivy from your ant build file
If you use ant 1.6.0 or superior version, this is really simple. You just have to add this attribute to your project tag :xmlns:ivy="antlib:fr.jayasoft.ivy.ant"Then call ivy retrieve task in the target you like. Example:
<target name="resolve"> <ivy:retrieve/> </target>You now can call this target with ant. You should then see that ivy created a lib directory in your project, containing the dependencies jar downloaded from ibiblio ! That's it, you can now use them to build a classpath or anything you want... and you are still far far away from ivy possibilities. Check the tutorial to discover some of them, and do not forget to read the reference documentation to go even further in your knowledge of the power of ivy !
About this site
This site allows you to comment each page to share your experience about any feature or documentation. You have to be registered to post a comment, it's simple, quick, free, and you will not be spammed with e-mails, don't worry. You can also use the forum to ask questions ( registration required).You can find documentation either on this site and in the distribution. But prefer the site, it is always more up to date and you can post and view comments on each page.
A single page documentation is also available.
The comments are owned by the poster. We aren't responsible for their content.
| Poster | Thread |
|---|





