Предположим, что у одного парня в моей компании есть проект sbt под названием commons, который довольно универсален. Этот проект определяется традиционным способом sbt: в основной папке с определением сборки в файле project/Build.scala.
Теперь какой-то другой парень разрабатывает проект под названием databinding, который зависит от commons. Мы хотим определить этот проект таким же образом, project/Build.scala.
У нас есть следующий макет каталога:
dev/
commons/
src/
*.scala files here...
project/
Build.scala
databinding/
src/
*.scala files here...
project/
Build.scala
Как я могу указать, что databinding требует, чтобы commons был создан первым и использовал файлы выходных классов?
Я прочитал Многопроектные сборки, и придумал следующее для определения сборки databinding:
object MyBuild extends Build {
lazy val root = Project(id = "databinding", base = file(".")) settings (
// ... omitted
) dependsOn (commons)
lazy val common = Project(id = "commons",
base = file("../commons")
)
}
За исключением того, что он не работает: sbt не нравится .. и выдает AssertionError. По-видимому, commons должна быть папкой внутри databinding. Но эти два проекта хранятся в отдельных хранилищах git, которые мы не можем вложить.
Как можно правильно определить эту зависимость?