从 Play 框架中的外部目录读取配置文件
Read configuration files from external directory in Play framework
我知道有无数关于将 application.conf
放在应用程序之外的问题,通过使用 config.file
系统 属性 来回答,但我们的情况不同。
我们有一个 Play 应用程序,它使用一个库,该库从类路径中读取自己的配置文件 /sys-config.xml
。它不能配置为使用不同的路径。问题是我们希望它在部署之外,所以我们不能把它放在 conf/
中,也不能只设置 config.file
。我们需要在类路径中添加一个任意目录,供 Play 应用程序在查找资源时获取和查找。我试过设置 CLASSPATH
,但它看起来要么被忽略,要么没有被 Activator/SBT 传递。
事实证明这只是一个 SBT 问题,您只需向 externalDependencyClasspath
添加一些内容,您可以从您选择的系统 属性 中获取这些内容。
externalDependencyClasspath in Runtime ++= sys.props.get("config.dir")
.map(f => Seq(file(f)))
.getOrElse(Nil)
我们现在可以 运行 ./activator -Dconfig.dir=/var/xyz run
它会在该目录中找到 application.conf
和 sys-config.xml
。
我知道有无数关于将 application.conf
放在应用程序之外的问题,通过使用 config.file
系统 属性 来回答,但我们的情况不同。
我们有一个 Play 应用程序,它使用一个库,该库从类路径中读取自己的配置文件 /sys-config.xml
。它不能配置为使用不同的路径。问题是我们希望它在部署之外,所以我们不能把它放在 conf/
中,也不能只设置 config.file
。我们需要在类路径中添加一个任意目录,供 Play 应用程序在查找资源时获取和查找。我试过设置 CLASSPATH
,但它看起来要么被忽略,要么没有被 Activator/SBT 传递。
事实证明这只是一个 SBT 问题,您只需向 externalDependencyClasspath
添加一些内容,您可以从您选择的系统 属性 中获取这些内容。
externalDependencyClasspath in Runtime ++= sys.props.get("config.dir")
.map(f => Seq(file(f)))
.getOrElse(Nil)
我们现在可以 运行 ./activator -Dconfig.dir=/var/xyz run
它会在该目录中找到 application.conf
和 sys-config.xml
。