Я просматриваю: https://github.com/typesafehub/config
Допустим, я хочу иметь конфигурацию по умолчанию, например. reference.conf, а затем я хочу иметь переопределения dev/prod (два разных application.conf), а затем я также хотел иметь переопределения для конкретного хоста, которые унаследованы как от application.conf, так и от reference.conf по умолчанию. Как бы я это сделал?
например, я представляю структуру каталогов примерно так:
resources/reference.conf
resources/prod/application.conf
resources/prod/master.conf
resources/prod/slave.conf
resources/dev/application.conf
resources/dev/master.conf
resources/dev/slave.conf
Или, может быть, это resources/dev/master/application.conf?
Где-то я бы указал среду, т.е., возможно, извлеченную из имени хоста, на котором было запущено приложение.
Если приложение было master.dev.example.com, я ожидаю, что смогу сделать что-то вроде:
getConfigurations("dev/master.conf").withDefaultsFrom(
getConfigurations("dev/application.conf").withDefaultsFrom(
getConfigurations("resource.conf"))
Но мне трудно понять, как именно это будет выглядеть с использованием данной библиотеки.
Я вижу, что могу установить системное свойство config.resource, но похоже, что это позволит только один уровень переопределений, dev-application.conf -> resources.conf, а не что-то вроде master-node.conf -> dev-application .conf -> ресурсы.conf.
Я вижу метод .withFallback, но это, кажется, если бы я хотел смешать два типа конфигурации в одном файле, а не объединять ресурсы/файлы вместе.