我使用sbt程序集插件创建一个JAR文件,我有以下文件夹结构:
src
-main
-scala
-resources
-application.conf
现在,当我做
时sbt clean assembly
我可以在生成的Jar文件中看到包含application.conf文件。我有两个问题:
为什么包含的application.conf不在最终Jar中的resources文件夹中,而是位于顶层,如下所示(Jar的内容)
-rw-r - r-- 1 joe staff 272B May 16 21:03 application.conf drwxr-xr-x 3乔工作人员102B 5月16日21:03 com / -rw-r - r-- 1 joe staff 187B 2016年3月4日library.properties drwxr-xr-x 3乔工作人员102B 5月16日21:03 typesafe /
如何通过设置System.property加载此application.conf?例如,我希望能够通过设置System属性来加载application.conf,如:
System.setProperty(" config.file"," application.default.conf")
有了这个,我可以从外面控制(运行jar文件时),使用哪个配置文件。当我尝试这个时,我得到了一个NulPointerException:
val someConfigFile = Option(System.getProperty("config.file"))
ConfigFactory.parseURL(getClass.getResource(someConfigFile.get)) // NullPointerException happens here...
答案 0 :(得分:0)
这是我需要做的,以便根据我从外面指定的内容加载jar中的配置文件!
val is = new InputStreamReader(getClass.getResourceAsStream(s"/$cfgFile"))
ConfigFactory.parseReader(is).resolve()
答案 1 :(得分:0)
你的第一个问题的答案是资源文件夹就像一个src文件夹,所以内容被复制,而不是文件夹本身。