As a Perl user, I got used quite quickly to the CPAN module, which helps me install a Perl module, including all its dependencies. But the more I use Java, the more I miss the ability to use a tool to automatically download all the JAR files of open-source libraries I use...
And so comes Ivy. Its most simple use is a bit like CPAN, where you can download JAR files based on XML descriptors that define what are the dependencies for a given library. There is already descriptors for many open-source projects on ivyrep, so that way it acts like CPAN.
More importantly, Ivy can figure out the needed build order for your own projects. For example, if project A depends on project B, then B is going to be built before A. Also, A will be automatically rebuilt if B is changed. This is something that was particularly lacking in Java: a Make-like dependency system between components that need to be integrated together.
In effect, Ivy handles the integration between your modules automatically. Ivy also offers the possibility to work with CruiseControl in a tool called ivycruise. That way, your automated build system handles dependencies between the modules as they are added during development, thus continuously integrating your software.
There are many, many advantages to continuous integration, but the greatest is that you won't be afraid of creating and updating small libraries re-used in many different projects, since the process of downloading and updating your library is automated for the users of your library. That way, you promote code reuse across projects.
Published on October 25, 2005 at 17:30 EDT
Older post: Test Coverage
Newer post: A free garbage collector and leak detector for C and C++