【问题标题】:How do I get play to look in the conf folder as well a special conf file location?如何在 conf 文件夹以及特殊的 conf 文件位置中进行查看?
【发布时间】:2018-09-30 20:11:06
【问题描述】:

似乎当我使用参数时:

-Dconfig.file=/path/to/file/file.conf

conf 文件夹从“conf 类路径”中删除,因此 play 抱怨它在 conf 文件夹中找不到某个 conf 文件。假设这是这里的问题,我怎么能在 conf 文件夹和给定的文件路径中查看?

【问题讨论】:

    标签: playframework configuration


    【解决方案1】:

    在我的机器上,使用 Play 2.6,我似乎没有这个问题。根据docs config.file 应该只指定conf/application.conf 的替换而不影响整个资源类路径:

    这些系统属性指定了application.conf 的替换, 不是补充。如果您仍想使用 application.conf 文件,然后您可以将 application.conf 包含在 您的其他.conf 文件通过在顶部写入包含"application" 那个文件。

    指定config.file 后,我们可以使用Environment.resource 确认对conf/ 资源的访问,如下所示:

    class ResourceImporter @Inject()(environment: Environment) {
      ...
      environment.resource("some-file-in-conf.data")
      ...
    }
    

    执行sbt "show unmanagedResources" 列出所有资源给出

    play-scala-starter-example git:(2.6.x) ✗ sbt -Dconfig.file=/etc/some.file
    ...
    [play-scala-starter-example] $ show unmanagedResources
    [info] * /Users/mgalic/sandbox/play-scala-starter-example/conf
    [info] * /Users/mgalic/sandbox/play-scala-starter-example/conf/logback.xml
    [info] * /Users/mgalic/sandbox/play-scala-starter-example/conf/application.conf
    [info] * /Users/mgalic/sandbox/play-scala-starter-example/conf/routes
    [success] Total time: 0 s, completed 30-Sep-2018 12:50:59
    [play-scala-starter-example] $ 
    

    我们看到conf/ 在指定config.file 之后仍然在类路径中

    我们可以像这样使用unmanagedResourceDirectories add additional resource directoriesconf/ 旁边的类路径

    unmanagedResourceDirectories in Compile += baseDirectory.value / "extra-resources"
    

    现在给出

    [play-scala-starter-example] $ show unmanagedResources
    [info] * /Users/mgalic/sandbox/play-scala-starter-example/conf
    [info] * /Users/mgalic/sandbox/play-scala-starter-example/conf/logback.xml
    [info] * /Users/mgalic/sandbox/play-scala-starter-example/conf/application.conf
    [info] * /Users/mgalic/sandbox/play-scala-starter-example/conf/routes
    [info] * /Users/mgalic/sandbox/play-scala-starter-example/extra-resources
    

    【讨论】:

    • 非常感谢马里奥!我确实想使用application.conf 中的一些值,所以包含它就可以了。我指的是application.conf 中的一个conf 文件,它位于conf 目录中,但找不到:Caused by: java.lang.IllegalArgumentException: requirement failed: Key store file conf/certs/local.cert does not exist!。因此,如果conf dir 仍在类路径中,有什么线索可以说明我可能在这里遗漏了什么吗?
    • 您是否尝试过在路径中省略conf/,即指定certs/local.cert 而不是conf/certs/local.cert
    • 原来这里的问题很简单,只需要提供证书文件的完全限定路径而不是相对路径。
    猜你喜欢
    • 2014-08-14
    • 2021-01-21
    • 2021-09-25
    • 2015-06-23
    • 1970-01-01
    • 2011-10-05
    • 2017-09-16
    • 2014-05-10
    • 2012-06-18
    相关资源
    最近更新 更多