Предположим, что у одного парня в моей компании есть проект 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, которые мы не можем вложить.
Как можно правильно определить эту зависимость?