2012-11-02 55 views
2

我有一個SBT項目,其中包含一個與akka演員合作的子項目(這是一個庫)。SBT子項目中的Akka應用程序特定設置

就像在akka docs,我試圖從子項目的reference.conf加載應用程序特定配置
在一個簡單的SBT項目中,不包含包含子項目,這是有效的。 那麼爲什麼不是子項目呢?

如何我加載配置:

val config = ConfigFactory.load() 
implicit val system:ActorSystem = ActorSystem("MyLibSystem", config.getConfig("library-project-conf").withFallback(config)) 

reference.conf

library-project-conf { 
    akka { 
    loglevel = DEBUG 
    # some more stuff 
    } 
} 

如果我把akka confuguraton的library-project-conf之外阿卡配置設置讀。

我跑sbt library-project/test
如果我log akka's configurationakka.log-config-on-start = on我收到了很多我無法使用的信息。

回答

0

這很可能與您在未指定ConfigFactory.load()方法時使用的類加載器相關。

確保您使用可以訪問配置文件的類加載器。

另外,我認爲你想要一個application.conf而不是reference.conf,因爲reference.conf用於添加新的默認值,而不是改變現有值。

+0

關於application.conf備註:你是對的(我重命名了這個文件)。對於可以訪問配置的ClassLoader,我相信這不是問題,因爲在讀取application.conf _is_時,我可以添加配置選項_ou​​tside__doctor_do _do_生效的library-project-conf。但是,也許我誤解你的建議 – derabbink

+0

如果你改變其他reference.confs中的值,不要使用reference.conf。 reference.conf旨在提供默認值,而不是覆蓋它們。使用application.conf –

+0

就像我說的,我改名爲reference.conf。整個事情與任何類裝載機無關。我認爲這是一個庫自己的(test-)application.conf不需要包含任何'library-project-conf {}'節,並且只有當你的庫在另一個項目中使用時,這樣的節纔會有效果。我還沒有能夠驗證這一點。 – derabbink

相關問題