#grails #configuration
#grails #конфигурация
Вопрос:
У меня есть внешний конфигурационный файл, который я использую в своей среде разработки, чтобы указать источник данных моего приложения grails. Я импортирую внешний файл в свой config.groovy, используя следующие строки :
grails.config.locations = ["classpath:${appName}-config.groovy",
"file:./${appName}-config.groovy"]
if (System.properties["${appName}.config.location"]) {
println("found")
grails.config.locations << "file:" System.properties["${appName}.config.location"]
}
Это работает, как и ожидалось, и хорошо. Однако у меня возникает проблема, когда приложение развертывается как файл войны. Расположение файла конфигурации жестко задано в config.groovy, как указано выше. Мое требование — разрешить клиентам указывать местоположение их собственного файла конфигурации.
Я застрял в этом, поскольку местоположения жестко заданы в config.groovy до создания файла war. Я не знаю, как бы я позволил клиенту изменять эти значения. Я не хочу создавать отдельный файл войны для каждого клиента, содержащий местоположение их файла конфигурации.
Есть ли способ изменить эти значения? Или, возможно, разумно, что у меня есть жестко заданное значение, в которое все клиенты должны помещать свои файлы конфигурации? Мне было бы интересно узнать, есть ли у кого-нибудь какие-либо предложения?
Комментарии:
1. У вас уже есть это свойство
${appName}.config.location
system.
Ответ №1:
У меня есть следующая рабочая конфигурация. Итак, это может быть полезно для вас.
// This condition may be rewrited in the Groovy style
final configbase = System.properties.'aaaaa.configbase' ? System.properties.'aaaaa.configbase':"${userHome}/.aaaaa/"
grails.config.locations = [
// Standart Grails config
"classpath:${appName}-config.properties",
"classpath:${appName}-config.groovy",
// Redhat Openshift
"file:${userHome}/app-root/data/.aaaaa/${appName}-config.properties",
"file:${userHome}/app-root/data/.aaaaa/${appName}-config.groovy",
// Based on System property -Daaaaa.configbase
"file:${configbase}/${appName}-config.properties",
"file:${configbase}/${appName}-config.groovy",
]