Ivy Subversion Resolver code set free

Wednesday, 24 October 2007
by adrian
filed under Code and About Us
Comments: 6

This one is for all the Java geeks out there…

You may or may not know that a lot of the backend data processing at Last.fm (e.g. chart generation, listening pattern analysis) is done by applications we write in Java. Like many other Java users we also use Ant to build our software. Recently we have incorporated Ivy into our build process to help us manage the dependencies between our projects and any third party libraries that we use (incidentally, Ivy has just graduated to an official Ant subproject so it is moving from strength to strength). This went smoothly until we ran into a limitation of Ivy that prevented us from using Subversion as a dependency repository as this isn’t supported out of the box. Fortunately Ivy has been architected in such a way that it is very extensible so we coded up our own Ivy Subversion Resolver and gave it the oh-so catchy name “Ivy-svn” (a name only a geek could love).

Anyway, the point of all this is that we found this really useful and decided not to keep this to ourselves but to share the fruits of our labour (and the code) under the Apache license. If this sounds like something for you, head on over to the Audioscrobbler development site at:


to find out more. If you do end up using it and have feedback or issues, we’d love to hear from you.


  1. mkb
    24 October, 15:00

    Hurray! Thank you for doing this.

    (Not that I use ant or ivy, but just on principle)

    mkb – 24 October, 15:00
  2. goncalo
    24 October, 17:05

    So you’ll get from SVN version of the correct dependency version for that proj instead of having to keep your own copies around or piles of jars… nice… I’ve seen horrible cvs trees with copies of jars for each proj because of these sort of problems…
    (yeah keeping binaries at the cvs repository, not that smartest thing but it wasn’t me!)

    goncalo – 24 October, 17:05
  3. Adrian
    24 October, 17:42

    Correct, instead of having to keep the jars for each project in Subversion, you just have one location in Subversion with all the jars you use across all your projects and then each project defines which ones it needs and you use Ant and Ivy to retrieve them. It takes a bit of time to set it all up but at some point you reach a critical mass and it actually speeds things up.

    Adrian – 24 October, 17:42
  4. goncalo
    24 October, 18:04

    Hmmm yeah, I did something similar with ant with about 40 proj that usually shared about 5 dep:
    Dependencies as projects
    all projects at root
    one ant file per proj with variables for tags on dependencies and proj sandbox
    if it was a dependency would get bin from version instead of source (because of 2nd level dep)
    it worked but all proj had to be tagged by version, binary, etc..


    goncalo – 24 October, 18:04
  5. dkay
    24 October, 21:34

    great work! i will certainly give it a try in projects where they don’t rely on maven.

    dkay – 24 October, 21:34
  6. Jonathan
    27 October, 15:20

    This has nothing to do with your post, but I just wanted to let you guys know that it looks like Leopard has broken the OS X version of the last.fm app! Please help us Leopard users, we’re scrobbleless!

    Jonathan – 27 October, 15:20

Comments are closed for this entry.