Настройки доступа в BuildConfig - PullRequest
3 голосов
/ 13 апреля 2011

Возможно ли как-то получить доступ к свойствам, указанным в Config.groovy внутри BuildConfig.groovy?

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

Ответы [ 4 ]

3 голосов
/ 14 апреля 2011

Если, когда вы говорите, что процесс упаковки имеет в виду при создании файла WAR, то я смог скопировать файлы в разные места, используя сценарии / события Grails.Например, мне нужно было скопировать один файл в папку WEB-INF / classes при создании WAR, поэтому я создал файл Events.groovy в папке / scripts со следующим содержимым:

// Copy liquibase changelog.xml to classpath folder
eventWarStart = {warName ->
  if (grailsEnv == "production") {
    println "Copying database migration files to classpath!"
    Ant.copy(toFile: "${classesDirPath}/changelog.xml", filtering: true, overwrite: true) {
      fileset(file: "${basedir}/grails-app/migrations/changelog.xml")
    }
    Ant.copy(toDir: "${classesDirPath}/releases/", filtering: true, overwrite: true) {
      fileset(dir: "${basedir}/grails-app/migrations/releases/")
    }
  }
}

Как выЯ вижу, если у вас есть доступ к окружающей среде.

Если вы не это имели в виду, просто проигнорируйте мой ответ.

1 голос
/ 14 апреля 2011

Обычным способом доступа к свойству, например bootstrap.path, определенным в Config.groovy, является

def bootStrapPath = org.codehaus.groovy.grails.commons.ConfigurationHolder.config.bootstrap.path 

Я не пробовал это с BuildConfig.groovy, но если это не сработает, то я думаю, это потому, что Config.groovy не был прочитан при выполнении BuildConfig.groovy. В этом случае вам нужно будет прочитать это самостоятельно. Реализация ConfigurationHolder должна показать вам, как это сделать.

1 голос
/ 14 апреля 2011

Единственное решение, которое я нашел, - это чтение Config.groovy самостоятельно (как упоминал Дон). Вот мое двухстрочное решение:

def directory = new File(getClass().protectionDomain.codeSource.location.path).parent
def config = new ConfigSlurper(grailsSettings.grailsEnv).parse(new File(directory + File.separator + "Config.groovy").toURI().toURL())

println config.bootstrapPath
1 голос
/ 14 апреля 2011

Вы можете сделать это:

System.getProperty('grails.env')

для извлечения текущей среды.

...