Pureconfig — можно ли включить в файл conf другой файл conf?

#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"
}