I don't use sbt, but and approach I take with ANT is to create a bootstrap target that sets up a developer's machine, so that ivy can be used to manage dependencies. Take a look at the following example:


Managed can't be translated to unmanaged in general. There are special cases where some jars can be put in lib/ with equivalent resulting behavior, but not generally. Examples of problems:

  1. plugins can request jars to be downloaded in custom configurations and unmanaged wouldn't cover those
  2. each classpath/configuration requires a separate directory containing all jars
  3. unmanaged dependencies lose the associated metadata, which is used by doc to link to external sites automatically, for example

This is a general problem with existing dependency management solutions for Java (Maven/Ivy). It is possible to approximate the idea of locked, offline resolution, but not especially cleanly, easily, or flexibly. (I'm aware of Ivy's retrieve.) In sbt, it probably requires using lib_managed/, skip in update := true, offline := true, and keeping the update cache around (in target/), but this isn't documented or tested.

(For a longer-term direction, Adept has locking down dependencies and offline usage as a core goal.)

Related Query