Grails Config: включить другой файл конфигурации - PullRequest
3 голосов
/ 07 июля 2011

В моей основной конфигурации есть что-то вроде:

grails.config.locations = ["file: grails-app / config / Jawr.groovy"].

При запуске приложенияс grails run-app все в порядке.

Но при развертывании (создании архива войны) это больше не работает, так как файл "Jawr.groovy" больше не сохраняется в файловой системе (он долженбыть только на войне).

У вас есть решение для этого?Как вы включаете внешние файлы в основной файл конфигурации Grails?

Спасибо.

Ответы [ 4 ]

1 голос
/ 18 августа 2011

Хорошо, кое-что здесь.

Во-первых, потому что у вас нет косой черты в вашем пути конфигурации, это путь относительно того, кто знает, где.Я поиграл с этим в Tomcat, и этот путь оказался относительно рабочего каталога, в котором вы были при запуске сервера Tomcat.Если вы запустите Tomcat, закроете его, измените каталоги, затем запустите его снова, вы получите два разных пути конфигурации.

Во-вторых, каталог grails-app существует только в дереве исходного кода вашего проекта Grails.,Структура распакованного WAR-файла больше похожа на папку веб-приложения вашего исходного дерева Grails с папками, такими как WEB-INF, META-INF, js, изображения и т. Д.

В-третьих, вы, вероятно, захотитене помещайте ваш внешний файл конфигурации в папку вашего веб-приложения.В следующий раз, когда вы развернете свое приложение, эта конфигурация будет стерта со старой версии приложения.Одна из точек внешнего конфига - это возможность повторного развертывания без перенастройки.

Простое, но не идеальное решение - использовать статический, полностью определенный путь, такой как /etc/yourApp/conf.groovy,затем поместите это в документацию.Есть также плагин, который обрабатывает это.

http://www.grails.org/plugin/external-config

Я не использовал его, но описание делает его звучащим так, как будто он делает разумные вещи.

0 голосов
/ 09 октября 2013

В этой статье предлагается разрешить пользователю указывать расположение файла конфигурации в качестве переменной среды или свойства java, т. Е. Вы можете просто указать его с помощью -D в командной строке,Это может быть использовано в дополнение ко всем другим методам.

0 голосов
/ 08 июля 2011

В моей работе наша команда часто использует системные свойства, чтобы сохранить путь к файлу конфигурации (часто в домашней папке пользователя, запустившего приложение - ради привилегий).Затем мы вручную копируем файл конфигурации в этот путь

. Чтобы определить, что это производственная среда, мы используем следующий код в Config.groovy:

if (System.properties["${appName}.config.location"]) {
    grails.config.locations = ["file:" + System.properties["${appName}.config.location"]]
}
0 голосов
/ 07 июля 2011

см. Это: https://stackoverflow.com/questions/6341117/is-it-possible-that-grails-xxconfig-groovy-as-a-script-no-compile

Затем я помещаю его в / shared, и изменить:

//Config.groovy
grails.config.locations =
["file:shared/TZLibConfig.groovy"]

//BuildConfig.groovy
grails.war.resources = { stagingDir, args ->
    copy(todir: "${stagingDir}/WEB-INF/shared"){
        fileset(dir:"shared",includes:"**")
    }
}
...