Sbt Assembly在JAR中包含Conf文件

时间:2017-05-16 19:15:38

标签: scala jar sbt-assembly

我使用sbt程序集插件创建一个JAR文件,我有以下文件夹结构:

src
 -main
  -scala
  -resources
    -application.conf

现在,当我做

sbt clean assembly

我可以在生成的Jar文件中看到包含application.conf文件。我有两个问题:

  1. 为什么包含的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 /

  2. 如何通过设置System.property加载此application.conf?例如,我希望能够通过设置System属性来加载application.conf,如:

    System.setProperty(" config.file"," application.default.conf")

  3. 有了这个,我可以从外面控制(运行jar文件时),使用哪个配置文件。当我尝试这个时,我得到了一个N​​ulPointerException:

    val someConfigFile = Option(System.getProperty("config.file"))
    ConfigFactory.parseURL(getClass.getResource(someConfigFile.get)) // NullPointerException happens here...
    

2 个答案:

答案 0 :(得分:0)

这是我需要做的,以便根据我从外面指定的内容加载jar中的配置文件!

  val is = new InputStreamReader(getClass.getResourceAsStream(s"/$cfgFile"))
  ConfigFactory.parseReader(is).resolve()

答案 1 :(得分:0)

你的第一个问题的答案是资源文件夹就像一个src文件夹,所以内容被复制,而不是文件夹本身。