我有一個用于進行 ML 培訓的多模塊 scala 應用程式。我有一個包含一些通用配置的核心模塊,我想將其添加到依賴于核心模塊的其他模塊中。
我所有的組態檔都位于資源檔案夾中,我的專案結構如下所示:
core
src
main
resources
application.conf
mod1
src
main
resources
application.conf
mod2
src
main
resources
application.conf
所以我想在我的 mod1 和 mod2 模塊的 application.conf 檔案中有第一行:
include core/application.conf
這樣我就可以從那里覆寫一些設定。我該怎么做呢?例如,這是關于我如何定義模塊 mod1 的 build.sbt 示例:
// Define Sub Modules and its settings
lazy val mod1 = (project in file(MODULE_NAME_CLEANSE)).dependsOn(core% "compile->compile;test->test", config)
.settings(
commonSettings,
enablingCoverageSettings,
dockerSettings(),
name := MODULE_1,
description := "Clean the incoming data for training purposes"
)
.enablePlugins(JavaAppPackaging, DockerPlugin)
uj5u.com熱心網友回復:
假設您使用的是 Lighbend 的配置庫。
一旦構建/部署,您的 2 個模塊將在其類路徑中分別application.conf包含來自核心模塊的檔案和來自所述模塊的檔案。兩者都將被加載,但您不能保證訂單。
推薦的方法是在你的核心模塊中將它命名為reference.conf檔案,而不是application.conf因為這樣你確定它reference.conf的加載優先級低于applicayion.conf.
請參閱https://github.com/lightbend/config#standard-behavior:
便捷方法 ConfigFactory.load() 加載以下內容(首先列出的優先級較高):
- 系統屬性
- application.conf(類路徑上具有此名稱的所有資源)
- application.json (類路徑上具有此名稱的所有資源)
- application.properties(類路徑上具有此名稱的所有資源)
- reference.conf(類路徑上具有此名稱的所有資源)
這個想法是庫和框架應該在它們的 jar 中附帶一個 reference.conf。應用程式應提供 application.conf
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/483490.html
