Переопределить настройки grails.serverURL и grails.propname для конкретного приложения в файле application.properties.

Мне нужно переопределить grails.serverURL во время выполнения без повторного создания WAR-файла приложения. Я пробовал различные способы установки grails.serverURL в файле application.properties и не могу заставить его работать.

Вот специфичная для среды часть Config.groovy:

environments {
   prod
   {
      grails.serverURL = "http://nonexistentserver.somecompany.com:8080"
      grails.anotherappspecificURL = "xcc://user:[email protected]"
   }

В основном наш application.properties выглядит так:

grails.env=prod
grails.war.deployed=true
app.grails.version=1.0.4
app.name=myapp

Ниже приведен один из способов, которыми я пытался переопределить настройки. Они определены в Config.groovy:

grails.serverURL=http://webserver1.somecompany.com:8080
grails.anotherappspecificURL=xcc://admin:[email protected]

Мы будем очень признательны за любую помощь в том, чтобы заставить это работать без внесения изменений в код!


person Community    schedule 25.06.2009    source источник


Ответы (3)


Правильный способ переопределить значения в Config.groovy — использовать внешний файл свойств, см.:

http://grails.org/doc/1.1.x/guide/3.%20Configuration.html#3.4%20Externalized%20Configuration

Укажите внешний файл свойств в Config.groovy, например:

grails.config.locations = [ "classpath:app-config.properties"]

В файле свойств (можно хранить в grails-app/conf/) укажите значение переопределения:

grails.serverURL=http://webserver1.somecompany.com:8080

В любое время, когда вам нужно изменить URL-адрес сервера после развертывания войны, просто измените файл свойств в /WEB-INF/classes/app-config.properties и перезагрузите контекст.

person John Wagenleitner    schedule 25.06.2009
comment
Да, я понял это из документации. Проблема в том, что он не работает. В нашем Config.groovy ничего не установлено для grails.config.location (оно закомментировано), поэтому я предполагаю, что файл внешних свойств по умолчанию — это application.properties. Похоже, это так, поскольку я могу изменить параметр для grails.env, и он подберет правильную конфигурацию среды, определенную в Config.groovy. Однако я хочу переопределить эти настройки чем-то другим при запуске во время выполнения, и действия, как вы заметили, не влияют ни на какие настройки grails.‹propertyname›. - person ; 25.06.2009
comment
Чтобы пояснить мой первоначальный пост, последний раздел кода находится в файле application.properties, а не в файле Config.groovy, как можно предположить в комментарии перед этим разделом кода. - person ; 25.06.2009
comment
Я считаю, что application.properties содержит метаданные приложения, которые не объединены с данными конфигурации, содержащимися в Config.groovy. Поэтому, чтобы переопределить параметр, который обычно задается в Config.groovy, вам нужно использовать grails.config.location, а не application.properties. - person John Wagenleitner; 26.06.2009
comment
Я понял, что ваш последний раздел кода был из application.properties, и смысл моего ответа состоял в том, чтобы сказать, что это неправильное место (т. Е. Не будет работать) для переопределения значений конфигурации. - person John Wagenleitner; 26.06.2009

Это может быть неактуально, но я заметил, что в адресе grails.serverURL отсутствуют кавычки.

person mikermcneil    schedule 20.10.2011

Я обнаружил, что внешняя конфигурация немного сложна (начиная с Grails 1.3.7). Вы должны поместить свой файл в grails.config.locations в Config.groovy

grails.config.locations << 'classpath:my-config-file.groovy'

Но вы не можете получить доступ к свойствам без добавления другого файла. Я заставил его работать, поместив новый файл конфигурации в grails-app/conf и добавив его в путь к классам, добавив следующее в scripts/Events.groovy.

eventCompileEnd = {
    ant.copy(todir:classesDirPath) {
      fileset(file:"${basedir}/grails-app/conf/SecurityConfig.groovy")
    }
}

Дополнительную информацию можно найти на странице https://stackoverflow.com/a/9789506/1269312.

person Big Ed    schedule 21.03.2012