未找到Play Framework Scala环境变量

时间:2015-10-24 10:01:32

标签: scala intellij-idea playframework-2.0 environment-variables

燮,

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

什么令人讨厌Scala似乎没有看到那些。

我一直收到没有为使用env变量的键指定的配置错误。

enter image description here

bug1

bug2

当我在控制台中启动应用程序时:

"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

配置文件:

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
}

我一直在那些:

Missing configuration key 'mongodb.db'!

当然我的问题不是我的mongo司机。我的问题是配置没有提供环境变量。梅勒也使用环境变量进行配置。当我粘贴除${?DB_URI}之外的实际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"
)

3 个答案:

答案 0 :(得分:3)

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

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

db.default.url = ${?DB_URL}

答案 1 :(得分:0)

  

当我在控制台中启动应用程序时:

 "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

-D没有设置环境变量,它会设置JVM system properties。您也应该能够从运行配置中设置环境变量,但是对话框的另一部分。

另外,Play的文档并没有说它完全关注环境变量:

  
    

As well as the application.conf file, configuration comes from a couple of other places.

         

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

         

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

  

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

后来确实说

  
    

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

  

但这只是HOCON README的引用。

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

答案 2 :(得分:0)

如果您的mongodb网址包含mongodb://xxxxxxxxxx?key=value等参数,那么intellij将默默删除该env变量。