Sunday, May 13, 2007

IVY dependency manager (Part1 Introduction)

Its a Sunday noon in Singapore. I just had a chat with Chirantha who is based on Royal Brunei these days. He just joined to our blog. Welcome chirantha. Awaiting few blogs from you on your mysql expertises :)

This is an attempt to introduce our recently setup dependency repository. As a step forward to make full use of version controlled source management, we have started using our own internal artifacts repository for some time now.

I try to split the topic in to three.
1) IVY Dependency manager - Introduction.
2) How to use our repository.
3) How to publish artifacts to IVY.

This week we will discuss on the ROADMAP to IVY :)
Its been long time our engineers have been feeling of using a common repository for our artifacts. Having common dependency manager is good for many reasons. Especially we don't have to keep individual dependencies for each and every product. The version management is very easy. So it was decided to go for a repository internally.

Now we need to decide the right choice. The main two candidates were Maven and IVY . After several considerations we decided to vote for ivy. Lets discuss on what caused us to choose IVY for our repository.

  • We thought IVY is a handy light weight tool on it's own grounds.
  • Considering the scope of our requirement, which we mingle with our own proprietary and open source artifacts we do not need to use maven ibiblio or any other out of box repositories.
  • We all are used to work with ant. The complexity in using maven with ant is a widely known fact! . Probably maven expects users to do everything using maven. Basically maven is a project management tool where IVY targets dependency management.
  • The IVY support to ant is really good. Publishing artifacts to repository can be easily done through ant and IVY.

So we decided to use IVY for our own reasons. Maven has it's goods and bad so IVY too. For more comparisons refer IVY site.

So stay tuned with hsenidians for my next post on how hsenid is using IVY.


BTW It is notable that IVY is still in apache incubator. I don't understand this. Though people used to compare IVY with Maven, they are not competitors :) . They are different tools and the level of scopes are different. So we mark our big +1 for IVY ;)

2 comments:

Himath said...

Hi JK,

I am not quite sure what dependency management is. It would be more helpful to readers if this concept is explained at the top.

Thanks
Himath

simbo1905 said...

Dependency management is about using configuration to specify which jar files your project users. It is considered bad practice to commit the jars you use into your source code repository (its is for source code not binary jars). With both maven and ivy you have a config file in your sourcecode which names which jars you need. Your build (be it ivy or maven) will download the jars to you machine (once and only once) and then compile against those jars. IDEs such as Eclipse and IntelliJ understand both ivy and maven configurations to set your project build classpath. This means that in opensource developers can easily use any IDE. Another key part is transient dependencies; the tool can read the config for all the jars you user to understand what those jars depend on. So you don't need to name every jar yourself; you just name the main frameworks and the tool will load anything those frameworks depend upon. Easy.