One of the goals of ENSIME is to provide support for common build systems, so that you don't have to repeat yourself (too much) when describing your project. At the same time, we want to stay decoupled from any particular build system.
I've been sketching out some changes to the .ensime config format:
:include ([files or dirs(recursive)])
:exclude ([file or dirs(recursive)])
:ivy [ t | nil ]
:mvn [ t | nil ]
:sbt [ t | nil ]
:jars ([files or dirs(recursive)])
The :ivy and :mvn options would cause ENSIME to search for "ivy.xml" or "pom.xml", and analyze these files for dependencies. The locations of these dependencies in the local ivy or maven cache would then be added to the classpath.
The :sbt option would cause the jars in the 'lib' and 'lib_managed' directories to be added to the classpath.
The :jars and :dirs option would act as a fallback when the above options are not sufficient.
I think it's important that ENSIME _not_ try to do the work of a build management system; that problem is already well solved. Hence, there are no plans to try to resolve and download dependencies.