#scala #pureconfig
Вопрос:
Можно ли включить в файл *conf другой файл conf?
Текущее осуществление:
// db-writer.conf
writer: {
name="DatabaseWriter",
model="model1",
table-name="model1",
append=false,
create-table-file="sql/create_table_model1.sql",
source-file="abcd.csv"
}
Желаемое решение:
// model1.conf others model2.conf, model3.conf..
table: {
name="model1",
table-name="model1",
create-table-file="../sql/create_table_model1.sql"
}
//db-writer.conf
import model1.conf <=== some import?
writer: {
name="DatabaseWriter",
model="model1", <=== some reference like this?
append=false,
source-file="abcd.csv"
}
Причина, по которой я хотел бы, чтобы все было именно так, заключается в :
- чтобы уменьшить количество дублирующихся определений
- чтобы предварительно определить пользовательский файл conf,который редко изменяется
Я думаю, это невозможно — если нет, есть ли у вас какие-либо предложения по разделению конфигураций и их повторному использованию?
Я использую scala 2.12 lang и pureconfig 0.14 (может быть обновлен до любой новой версии)
Ответ №1:
Pureconfig использует HOCON (хотя некоторые интерпретации таких вещей, как длительность, различаются). HOCON include
поддерживается.
Поэтому, предполагая, что у вас есть model1.conf
ресурсы (например src/main/resources
), все, что вам нужно, db-writer.conf
это
include "model1"
Также поддерживаются переопределения и объединение в стиле HOCON:
writer: ${table} {
name = "DatabaseWriter"
model = "model1"
append = false
source-file = "abcd"
}