Расположение внешней конфигурации Grails для развернутой войны

#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",
]