未找到 Play Framework Scala 环境变量

Hai*_*ito 5 scala intellij-idea environment-variables playframework-2.0

苏普,

我正在尝试在 Play2.4 Scala 中为我的项目设置环境变量。我已经在 Intellij 的运行配置中设置了变量。

令人烦恼的是 Scala 似乎没有看到这些。

我不断收到未为我使用环境变量的键指定的配置错误。

在此输入图像描述

错误1

错误2

当我启动应用程序时,这些显示在控制台中:

"C:\Program Files\Java\jdk1.8.0_25\bin\java" -Dfile.encoding=UTF8 -DMAIL_PORT=587 -DDB_URI=mongodb://uri -Djline.terminal=none -Dsbt.log.noformat=true -Dsbt.global.base=C:\Users\Haito\AppData\Local\Temp\sbt-global-plugin7stub -Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M -classpath C:\Users\Haito\.IntelliJIdea14\config\plugins\Scala\launcher\sbt-launch.jar xsbt.boot.Boot "project root" ~run
Run Code Online (Sandbox Code Playgroud)

以及配置文件:

mongodb.uri = ${?DB_URI}

play.mailer {
  host=${?MAIL_HOST}
  port=${?MAIL_PORT}
  ssl=false
  tls=true
  user=${?MAIL_USERNAME}
  password=${?MAIL_PASSWD}
  debug=false
  mock=false
}
Run Code Online (Sandbox Code Playgroud)

我不断收到这些:

Missing configuration key 'mongodb.db'!
Run Code Online (Sandbox Code Playgroud)

当然我的问题不是我的 mongo 驱动程序。我的问题是配置没有提供环境变量。Mailer 也使用环境变量进行配置。当我粘贴除 之外的实际 URI 时,${?DB_URI}它会起作用。

建造:

resolvers += "scalaz-bintray" at "http://dl.bintray.com/scalaz/releases"

resolvers += "Sonatype Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/"

libraryDependencies ++= Seq(
  "org.reactivemongo" %% "play2-reactivemongo" % "0.11.2.play24"
)

libraryDependencies ++= Seq(
  "com.typesafe.play" %% "play-mailer" % "3.0.1"
)
Run Code Online (Sandbox Code Playgroud)

Dav*_*een 6

这是IntelliJ 中的一个错误。在 Play 运行配置中设置“环境变量”字段会设置系统属性,而不是环境变量。

如果您在类似的地方手动配置环境变量,.bash_profile那么您当然可以在 application.conf 中使用它们,例如:

db.default.url = ${?DB_URL}
Run Code Online (Sandbox Code Playgroud)


Ale*_*nov 0

\n

当我启动应用程序时,这些显示在控制台中:

\n\n
 "C:\\Program Files\\Java\\jdk1.8.0_25\\bin\\java" -Dfile.encoding=UTF8 -DMAIL_PORT=587 -DDB_URI=mongodb://uri -Djline.terminal=none -Dsbt.log.noformat=true -Dsbt.global.base=C:\\Users\\Haito\\AppData\\Local\\Temp\\sbt-global-plugin7stub -Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M -classpath C:\\Users\\Haito\\.IntelliJIdea14\\config\\plugins\\Scala\\launcher\\sbt-launch.jar xsbt.boot.Boot "project root" ~run\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

-D不设置环境变量,它设置JVM 系统属性。您也应该能够从运行配置中设置环境变量,但在对话框的不同部分。

\n\n

另外,Play 的文档根本没有说它会查看环境变量:

\n\n
\n
\n

除了 application.conf 文件之外,配置还来自其他几个地方。

\n\n

默认设置是从类路径上找到的任何reference.conf 文件加载的。大多数 Play JAR 都包含一个具有默认设置的 reference.conf 文件。application.conf 中的设置将覆盖 reference.conf 文件中的设置。

\n\n

也可以使用系统属性来设置配置。系统属性覆盖 application.conf 设置。

\n
\n
\n\n

即路过-Dmongodb.uri=...应该有效。

\n\n

后来它确实说

\n\n
\n
\n

对于在配置树中找不到的替换,实现可以尝试通过查看系统环境变量或其他外部配置源来解决它们。(有关环境变量的更多详细信息,请参阅后面的部分。)

\n
\n
\n\n

但这只是 HOCON 自述文件中的引用。

\n\n

您需要查看加载配置的代码以检查它是否确实使用了包含环境变量的方法之一。

\n