2017-05-16 62 views
3

我使用了SBT組件插件創建一個JAR文件中,我有以下文件夾結構:SBT大會包含conf文件的JAR

src 
-main 
    -scala 
    -resources 
    -application.conf 

現在,當我做

sbt clean assembly 

我可以在生成的Jar文件中看到包含application.conf文件。我有兩個問題:

  1. 爲什麼inluded application.conf沒有在最後罐的資源文件夾,但裏面而它是在如下圖所示(罐的內容)頂級

    -rw-r - r-- 1 joe staff 272B May 16 21:03 application.conf drwxr-xr-x 3 joe staff 102B May 16 21:03 com/ -rw-r - r-- 1 joe工作人員187B Mar 4 2016 library.properties drwxr-xr-x 3 joe工作人員102B May 16 21:03 typesafe/

  2. 如何加載此應用程序c通過設置一個System.property?例如,我希望能夠通過設置系統屬性一樣來加載application.conf:

    System.setProperty( 「config.file」, 「application.default.conf」)

有了這個,我可以從外部控制(運行jar文件時),使用哪個配置文件。當我嘗試這樣做,我得到了一個N​​ulPointerException:

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

回答

0

這是我需要做的,使罐內的配置文件可以基於我從外面指定加載!

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

回答你的第一個問題是,資源文件夾就像一個src文件夾等內容被複制,而不是文件夾本身。