从 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.confsys-config.xml