Использование версии SettingKey в качестве версии зависимости в sbt - PullRequest
0 голосов
/ 24 июня 2019

Текущая ситуация

Настройка моего проекта выглядит примерно так:

Проект: 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).Поэтому мне либо:

  1. необходимо получить доступ к val findVersion корневого проекта из build.sbt проектаA & projectB ИЛИ
  2. , необходимого для использованияверсия, прямо такая как в 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..

Можно ли как-то достичь того, что мне нужно?

1 Ответ

1 голос
/ 24 июня 2019

Рекомендуемый способ зависимости между проектами будет в вашем root / build.sbt иметь что-то вроде этого

val projectA = project in file("projectA")

val projectB = (project in file("projectB")).dependsOn(projectA)

Если это не то, что вам нужно / нужно, тогда вы можете использовать задачу версии для установки версий в настройках зависимостей, например так:

libraryDependencies := { libraryDependencies.value :+ ("ext-lib" %% "com.fbaierl" % version.value) }

Надеюсь, что поможет

...