Можно ли использовать мультипроекты из GIT в качестве зависимостей SBT?

Я хотел бы использовать banana-rdf в своем проекте, в идеале, определяя его как зависимость в build.scala с помощью dependsOn:

lazy val root = Project("root", file(".")) dependsOn RootProject(uri("git://github.com/w3c/banana-rdf"))

Однако, banana-rdf - это мультипроект, поэтому его нужно составлять по-разному. Из того, что я вижу, эти определения с несколькими проектами позволяют указывать расположение проектов как пути к файлам и не разрешать URI.

Вопрос: Правильно ли я говорю, что я должен клонировать эти многопроектные зависимости GIT в свой проект и ссылаться на них как на папки?

Мне нравится идея оставить все GIT клонирование до SBT, а их клонирование в некоторой папке tmp SBT, а не загромождать мой проект...

Ответ 1

Я все время зависит от подпроектов Banana RDF с ProjectRef, например:

lazy val core: Project = Project(
  ...
).dependsOn(
  ProjectRef(uri("git://github.com/w3c/banana-rdf.git"), "banana-jena")
)

Особенно приятно, что вы можете просто привязать имя фиксации или ветки как идентификатор фрагмента в URI, и все работает точно так, как вы ожидали.