Question: I've heard (and I know I've seen examples too, if only I can remember where) that `sbt` can obtain dependencies from a git repo.

I am looking to obtain the dependency [harrah/up](https://github.com/harrah/up) from github. The repository does not provide any artifact JAR files, only a source tree which is set up to be built using `sbt`. The process that I am imagining is that `sbt` will download the source repo, build it, and then use that as the dependency artifact.

I may be imagining that `sbt` can in fact do something like this. Can it? And if so, how?

Answer: 
Yes indeed. You can give your `Project` a dependency with the `dependsOn` operator, and you can reference a Github project by its URI, for example `RootProject(uri("git://github.com/dragos/dupcheck.git"))`. Alternatively, you can `git clone` the project, and then reference your local copy with `RootProject(file(...))`. See ["Full Configuration"](https://github.com/harrah/xsbt/wiki/Full-Configuration) on the SBT wiki for details and examples.
Since I had problems getting the dependencies of my library resolved (using the suggested `RootProject`) I'd like to point out to the object called `ProjectRef`. Thus, if one need to depend on a library residing in git, I suggest to do so as follows:

```
import sbt.Keys._
import sbt._

object MyBuild extends Build {

  lazy val root = Project("root", file("."))
    .dependsOn(myLibraryinGit)
    .settings(
      ...,
      libraryDependencies ++= Seq(...))

  lazy val myLibraryinGit = ProjectRef(uri("git://git@github.com:user/repo.git#branch"), "repo-name")

}

```

*Source: <http://blog.xebia.com/git-subproject-compile-time-dependencies-in-sbt/>*