Как загрузить внешнюю конфигурацию из плагина Grails - PullRequest
0 голосов
/ 10 июля 2019

У нас есть набор внутренних приложений 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, поэтому я предполагаю, что существует некоторая проблема с обработкой внешних файлов конфигурации. Есть ли способ обойти это?

...