SBT: динамически определять строительную платформу - PullRequest
4 голосов
/ 09 апреля 2019

Я пытаюсь динамически изменить ссылку на зависимость jar, которую я использую в своем проекте, в зависимости от платформы (Windows или Linux)

Итак, это очень тривиальный сценарий,

Как я могу реализовать эту простую проверку в build.sbt?

1 Ответ

4 голосов
/ 09 апреля 2019

Потенциальный подход заключается в сопоставлении с шаблоном на System.getProperty("os.name") в пределах пользовательской настройки , например,

val configureDependencyByPlatform = settingKey[ModuleID]("Dynamically change reference to the jars dependency depending on the platform")
configureDependencyByPlatform := {
  System.getProperty("os.name").toLowerCase match {
    case mac if mac.contains("mac")  => "org.example" %% "somelib-mac" % "1.0.0"
    case win if win.contains("win") => "org.example" %% "somelib-win" % "1.0.0"
    case linux if linux.contains("linux") => "org.example" %% "somelib-linux" % "1.0.0"
    case osName => throw new RuntimeException(s"Unknown operating system $osName")
  }
}

, а затем добавьте оцененную настройку к libraryDependencies следующим образом

libraryDependencies ++= Seq(
  configureDependencyByPlatform.value,
  "org.scalatest" %% "scalatest" % "3.0.5",
  ...
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...