类型安全配置:从打包的 scala 应用程序的外部路径加载附加配置
Posted
技术标签:
【中文标题】类型安全配置:从打包的 scala 应用程序的外部路径加载附加配置【英文标题】:Typesafe config: Load additional config from path external to packaged scala application 【发布时间】:2013-08-14 06:26:36 【问题描述】:我的 scala 应用程序将被打包到一个 jar 中。当我运行我的应用程序时,它需要读取存储在我的应用程序 jar 外部的附加配置文件。我正在寻找类似于 Typesafe Config 库的功能,但也欢迎其他解决方案!有没有办法做如下的事情:
val hdfsConfig = ConfigFactory.load("my_path/hdfs.conf")
【问题讨论】:
【参考方案1】:我想你想要的是:
val myCfg = ConfigFactory.parseFile(new File("my_path/hdfs.conf"))
【讨论】:
这不会在配置中包含reference.conf;规范的方法是将parseFile
的结果夹在默认参考配置和默认覆盖之间,这看起来像val fileConfig = parseFile(); val myConfig = ConfigFactory.load(fileConfig)
。
这是什么File
类? java.io.File
或 scala.reflect.io.File
?
@EduardoBezerra,即java.io.File
如果我们在 parseFile() 的参数中包含其他 conf 文件,也可以读取吗?
@WeiLin,我不确定我明白你的意思。您能更清楚地了解您要做什么吗?【参考方案2】:
如果您的外部配置是从标准位置添加或覆盖配置参数,您可以执行以下操作:
val baseConfig = ConfigFactory.load()
val config = ConfigFactory.parseFile(yourFile).withFallback(baseConfig)
其中yourFile
是java.io.File
文档参考here
【讨论】:
【参考方案3】:val config = ConfigFactory.load("pathtoFile/FileName.propertes")
也可以。
【讨论】:
我相信只有当文件在类路径上时才有效。 确实,这个答案和这个question更相关以上是关于类型安全配置:从打包的 scala 应用程序的外部路径加载附加配置的主要内容,如果未能解决你的问题,请参考以下文章