Обычное решение - поместить зависимости в класс для каждого подпроекта, как вы это делали с Proj-классом. Обычно вам нужен один класс для каждого подпроекта, поскольку они часто имеют уникальные зависимости.
Если вы ленивы, вы можете объявить класс с зависимостями в строке:
object Dependencies {
....
lazy val jodaTime = "joda-time" % "joda-time" % ...
lazy val scalaTime = "org.scala-tools" % "time" % ...
lazy val redis = "com.redis" % "redisclient" % ...
}
val xBase = project("x-base", "x-base", new DefaultProject(_) {
val jodaTime = Dependencies.jodaTime
val scalaTime = Dependencies.scalaTime
})
val xY = project("x-y", "x-y", new DefaultProject(_) { val redis = Dependencies.redis }, xBase)
В приведенном выше примере (для продукта x) модуль xY
зависит от модуля xBase
.
Объект Dependencies упрощает повторное использование зависимостей в модулях.