Friday, October 29, 2010

The pain of dependency management (that's you, vscaladoc-1.1-md-3)...

Well, it's certainly been a while since I've posted anything here, but I figured this is as good a place as any for this tidbit. While working on a project at work I ran "sbt clean-cache" accidentally, which ended up clearing out my lib_managed dir. "No problem," I thought, "I'll just run sbt update and make it right". Well, long story short, update failed to download vscaladoc-1.1-md-3:

[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: org.scala-tools#vscaladoc;1.1-md-3: not found
[warn] ::::::::::::::::::::::::::::::::::::::::::::::

Wait, what? That's not one of my dependencies, it must be a transitive dependency from something else that's gumming things up. After some searching through my ~/.ivy directory for "1.1-md-3", I found the culprit: configgy. I'm not sure why configgy is exporting a dependency on vscaladoc (or on specs, for that matter), but I'm guessing that this is just the default behavios and Configgy needs fixed. Anyways, changing my SBT dep to:

val configgy = "net.lag" % "configgy" % "2.0.0" intransitive()

gets things going again by telling SBT to just ignore all of Configgy's upstream deps.