【问题标题】:force pureconfig to use -dconfig.file application.conf file and not resource application.conf强制 pureconfig 使用 -dconfig.file application.conf 文件而不是资源 application.conf
【发布时间】:2021-01-15 12:05:48
【问题描述】:

我有以下 application.conf 文件:

# App
tables = [
    "table_1",
    "talbe_2"
]

以及以下 scala 代码:

import pureconfig._
import pureconfig.generic.auto._
import com.typesafe.config.ConfigFactory
import pureconfig.generic.ProductHint

case class Configuration(tables: Array[String])

object Config {
  implicit def hint[A] = ProductHint[A](ConfigFieldMapping(CamelCase, CamelCase))

  val conf = ConfigSource.fromConfig(ConfigFactory.load("application.conf")).load[Configuration] match {
    case Right(conf) => conf
    case Left(failures) => throw new Exception(s"Unable to load the configuration ${failures.toList.mkString("\n")}")
  }
}

为了测试 application.conf,我有这个代码:

object Test extends App {

  val res = Config.conf.tables
  println("hello")
}

当我将 application.conf 放到资源文件夹中时,它可以工作。但是当我使用时它不起作用

-Dconfig.file=C:/Users/path/to/application.conf

尽管参数 -Dconfig.file 中有一个,但它使用资源 application.conf 文件。 你有什么想法吗?

【问题讨论】:

    标签: java scala typesafe-config pureconfig


    【解决方案1】:

    问题是调用

    ConfigFactory.load("application.conf")
    

    来自 scaladocs

    从给定的类路径资源加载应用程序的配置 或类路径资源基本名称,将其夹在默认值之间 参考配置和默认覆盖,然后解决它。

    你必须使用

    ConfigFactory.load()
    

    哪个

    加载一个默认配置,相当于 加载(默认应用程序())

    defaultApplication 支持config.file

    如果系统属性 config.resource、config.file 或 config.url 设置,然后在那些指定的类路径资源、文件或 URL 将使用属性而不是默认值 application.{conf,json,properties} 类路径资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-07
      • 2018-10-04
      • 2018-04-28
      • 2020-12-26
      • 1970-01-01
      • 2019-08-09
      • 2021-03-22
      • 1970-01-01
      相关资源
      最近更新 更多