Текущая ситуация
Настройка моего проекта выглядит примерно так:
Проект: root (build.sbt
, version.sbt
)
Подпроект: projectA (build.sbt
) Подпроект: projectB (build.sbt
)
В моем version.sbt
у меня есть val
, который читает версию дляиспользовать из внешнего файла json, например, так:
version in ThisBuild := findVersion
lazy val findVersion: String =
parse(Source.fromFile("../buildProperties.json").mkString).map(_ \\ "version").map(_ map (_.asString)) match {
case Right(Some(x) :: _) => x
case _ => throw new IllegalArgumentException("Unable to read buildProperties.json")
}
Проблема
Теперь мне нужно использовать эту версию для определения зависимостей внутри подпроектов (projectA & projectB).Поэтому мне либо:
- необходимо получить доступ к
val findVersion
корневого проекта из build.sbt
проектаA & projectB ИЛИ - , необходимого для использованияверсия, прямо такая как в build.sbt проекта A & projectB:
libraryDependencies += "ext-lib" % "com.fbaierl" % version.value % Provided
.Но это приводит к исключению error: 'value' can only be used within a task or setting macro, such as :=, +=, ++=, Def.task, or Def.setting.
.
Можно ли как-то достичь того, что мне нужно?