【问题标题】:Akka app-specific settings in SBT sub projectSBT 子项目中的 Akka 应用程序特定设置
【发布时间】:2012-10-23 02:51:58
【问题描述】:

我有一个 SBT 项目,其中有一个子项目(这是一个库),它与 akka 演员一起做一些事情。

就像在akka docs 中一样,我正在尝试从子项目的reference.conf 加载特定于应用程序的配置
在一个简单的 SBT 项目中,not 包含子项目,这是可行的。 那么为什么不用于子项目呢?

我如何加载配置:

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 配置放在 library-project-conf 之外,则 akka 的配置设置读取。

我运行sbt library-project/test
如果我 log akka's configurationakka.log-config-on-start = on 我会得到很多我无法充分利用的信息。

【问题讨论】:

    标签: scala configuration sbt akka


    【解决方案1】:

    这很可能与您未向 ConfigFactory.load() 方法指定类加载器时使用的类加载器有关。

    确保您使用可以访问配置文件的类加载器。

    另外,我认为您需要 application.conf 而不是 reference.conf,因为 reference.conf 用于添加新的默认值,而不是更改现有的。

    【讨论】:

    • 关于application.conf 备注:你是对的(我重命名了文件)。对于可以访问配置的 ClassLoader,我相信这不是问题,因为在 application.conf is 被读取,我可以添加配置选项 outside 库-project-conf 使 do 生效。但也许我误解了你的建议
    • 如果您要更改其他 reference.conf 中的值,请不要使用 reference.conf。 reference.conf 旨在提供默认值,而不是覆盖它们。使用 application.conf
    • 就像我说的,我重命名了reference.conf。整个事情与任何类加载器无关。我认为这是一个库自己的(test-)application.conf 不需要包含任何library-project-conf{} 部分,并且只有当您的库在另一个项目中使用时,这样的部分才会起作用。我还无法验证这一点。
    • 不,当然你不需要在 application.conf 中包装配置
    猜你喜欢
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 2013-04-14
    • 2016-02-24
    • 1970-01-01
    相关资源
    最近更新 更多