У нас есть набор внутренних приложений Grails 3.3, которые имеют общую конфигурацию для таких вещей, как безопасность, доступ к базе данных и т. Д. Я хочу поместить эту общую конфигурацию в плагин, а не дублировать ее в каждом приложении.
На данный момент я установил плагин external-config (https://plugins.grails.org/plugin/grails/external-config) как зависимость в моем хост-приложении. Плагин предоставляет набор файлов .yml в своем каталоге grails-app / conf , к которому я затем обращаюсь из приложения хоста. В файле application.yml хоста есть такой раздел (анонимный):
grails:
config:
locations:
- classpath:pluginConfig.yml
- classpath:hibernateConfig.yml
- classpath:envConfig.yml
environments:
test:
grails:
serverURL: http://test.company.com/app
production:
grails:
serverURL: http://prod.company.com/app
Проблема здесь в том, что для тестирования и производства мы храним пароли базы данных в другом внешнем файле конфигурации, который не является частью нашего исходного репозитория. Я попытался включить его в файл envConfig.yml, предоставляемый из плагина, вот так (используя плагин external-config в моем плагине):
test:
grails:
config:
locations:
- file:///path/to/file/dbConfig.yml
Кажется, что dbConfig.yml никогда не загружается, так как любая попытка доступа к БД жалуется на неверное имя пользователя и пароль. Размещение имени пользователя и пароля непосредственно в envConfig.yml плагина работает нормально, но это не тот подход, который мы хотим использовать.
Затем я попытался включить dbConfig.yml непосредственно в хост-приложение, например:
grails:
config:
locations:
- classpath:pluginConfig.yml
- classpath:hibernateConfig.yml
- classpath:envConfig.yml
environments:
test:
grails:
config:
locations:
- file:///path/to/file/dbConfig.yml
Когда я пытаюсь развернуть и запустить свое приложение, я получаю следующее исключение:
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
Диалект Hibernate определен в hibernateConfig.yml, поэтому я предполагаю, что существует некоторая проблема с обработкой внешних файлов конфигурации. Есть ли способ обойти это?