Как читать переменные окружения в Scala - PullRequest
137 голосов
/ 03 апреля 2012

В Java чтение переменных среды выполняется с помощью System.getenv().

Есть ли способ сделать это в Scala?

Ответы [ 6 ]

203 голосов
/ 03 апреля 2012

Начиная с Scala 2.9, вы можете использовать sys.env для того же эффекта:

scala> sys.env("HOME")
res0: String = /home/paradigmatic

Я думаю, что лучше использовать API Scala вместо Java. В настоящее время существует несколько проектов по компиляции Scala для других платформ, кроме JVM (.NET, javascript, native и т. Д.). Сокращение зависимостей от Java API сделает ваш код более переносимым.

118 голосов
/ 03 апреля 2012

Существует объект:

scala.util.Properties

, у него есть набор методов, которые можно использовать для получения информации об окружающей среде, включая

scala.util.Properties.envOrElse("HOME", "/myhome" )
23 голосов
/ 03 апреля 2012

Так же:

scala> System.getenv("HOME")
res0: java.lang.String = /Users/dhg
5 голосов
/ 06 ноября 2018

Использование напрямую по умолчанию с getOrElse на карте sys.env (val myenv: Map[String, String] = sys.env):

sys.env.getOrElse(envVariable, defaultValue)

Вы получаете содержимое envVariable или, если оно не существует, defaultValue.

4 голосов
/ 24 июля 2016

Если используется библиотека конфигурации Lightbend (по умолчанию в Play2 и Akka), тогда вы можете использовать

foo = "default value" foo = ${?VAR_NAME}

синтаксис для переопределения foo, если существует переменная окружения VAR_NAME. Подробнее в https://github.com/typesafehub/config#optional-system-or-env-variable-overrides

0 голосов
/ 25 мая 2017

Для печати всех переменных среды вы можете использовать

System.getenv.forEach((name, value) => println(s"$name: $value"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...