Использование внешнего файла конфигурации - PullRequest
1 голос
/ 14 сентября 2011

Я добавил приведенный ниже код в свой файл Config.groovy, однако, несмотря на его наличие, я не могу получить доступ к внешним свойствам конфигурации в файле Config.groovy.

Кто-нибудь знает, как мне получить доступ к свойствам внешнего файла конфигурации в файле Config.groovy?

if (System.getProperty("CONFIG")) { 
  grails.config.locations << "file:" + System.getProperty("CONFIG")
} else { 
  grails.config.locations << "file:./${appName}-config.properties"
}

Примечание.файлы конфигурации ConfigurationHolder.config и grailsApplication для доступа к свойствам, но ни один из этих подходов не работает.

Спасибо.

Ответы [ 3 ]

0 голосов
/ 22 марта 2012

@ Ник Ларсон, То, что вы упомянули о незагруженном CONFIG, не соответствует действительности.Если CONFIG - это параметр JVM, для которого задано -DCONFIG = xxxx, то он устанавливается до запуска config.groovy.

@ Kin1, Вы используете file: протокол для доступа к файлу свойств.Вы пытаетесь получить доступ к этому в файле WAR или EAR или это файловая система.В файле WAR или EAR вам нужно использовать classpath: для файла file: не работает.Кроме того, вы должны удостовериться, что действительно скопировали файл Groovy (не скомпилированный файл класса) в путь к классам.Мы делаем это в WAR-событии create, и процесс сборки копирует файл конфигурации в один из путей к классам.

Надеюсь, это поможет.

0 голосов
/ 16 сентября 2017
Add the below line in config.groovy

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

environments {
    development {   
        grails.logging.jul.usebridge = true
        grails.config.locations = ["file:C:\\conf\\externalfile.groovy"]
    }
    production {
        grails.logging.jul.usebridge = false
        grails.config.locations = ["file:/opt/config/externalfile.groovy"]
        // TODO: grails.serverURL = "http://www.changeme.com"
    }
}

If you want to access any property from external configuration(config.groovy) then just declare the property like 

property = property value eg:(ImagePath = "C:\\Users\\Saved Pictures")

access it like grailsApplication.config."property"

eg:(grailsApplication.config.ImagePath)

NOTE: dont use def just a property and its value.
0 голосов
/ 14 сентября 2011

Я думаю, что это может привести к путанице из-за порядка загрузки файлов конфигурации.Я уверен, что во время загрузки Config.groovy, внешний еще не загружен.

Таким образом, ваше свойство "CONFIG" установлено во внешнем файле, который является именем файла, который вы хотите загрузить?

Как обычно я делаю это просто список всех файловЯ мог бы использовать.

grails.config.locations = [
        "file:../app-config/myapp-dataSource.groovy",
        "file:../app-config/myapp-config.groovy"
]

environments {
  development {
    grails.config.locations = [
            "file:../myapp-config/myapp-dataSource.groovy",
            "file:../myapp-config/myapp-config.groovy",
            "file:${userHome}/myapp-config/myapp-dataSource.groovy",
            "file:${userHome}/myapp-config/myapp-config.groovy"
    ]   
  }
...
}

Если файлы не существуют, они просто пропускаются.Файлы, которые я считаю, загружаются по порядку, поэтому все, что находится в каталоге $ {userHome}, переопределит ранее установленные значения.Это хорошо для разработки, так как вы можете использовать локальные способы изменения настроек на машине, и вам не нужно беспокоиться об этих изменениях конфигурации, которые регистрируются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...