Я хочу назвать свои файлы WAR автоматически в зависимости от appName
, appVersion
и короткого имени Environment.current
. У меня есть следующие настройки опции в BuildConfig.groovy
:Название WAR на основе среды в BuildConfig.groovy
String currentEnvShortName = Environment.envNameMappings.find{it.value == Environment.current.name}.key
def f = new File("grails-app/conf/config.properties")
f.text = ""
f << "Current Env: ${currentEnvShortName}"
grails.project.war.file = "target/war/${appName}-${appVersion.toString().replaceAll(/\./,' ').split().join("-")}${currentEnvShortName}.war"
Я пишу среду в файл, так что я не должен ждать команды war
выполнить. EDIT: ИСПОЛЬЗОВАНИЕ GGTS COMMAND LINE. Во-первых, я думал, что все работает так, как ожидалось. Мой обычный процесс развертывания заключается в следующем:
- запустить
grails clean
- кнопкуВыполнения
war
команды для нужной среды - развертывания WAR на сервере приложений
После чистые, однако, и, возможно, также после того, как другие grails, значение Environment.current
изменений в пути я не понимаю. Это всегда dev
при первом запуске команды war
. После этого первого раза имя среды снова будет восстановлено. Так что я делаю, как обходной путь является:
- запустить
grails clean
- запустить
war
команды для желаемой среды, но перерыв сразу после его запуска - запустить
war
команды для требуемой среды - развертывания WAR на сервер приложений
Я делаю что-то неправильно или это ошибка?
Окружающая среда для воспроизведения:
GGTS 3.6.4 RELEASE
Grails 2.4.2
Groovy 2.3.10
JDK 1.6.0_07
EDIT: I не удалось воспроизвести использование Grails из обычной командной строки. Такое поведение происходит только с встроенной командной строкой Groovy Grails Tool Suite. Кажется, что среда переключается случайным образом.
EDIT 2: ОС: Windows 7
Я мог бы воспроизвести его во вновь созданном проекте; однако проблема возникает только с командной строкой GGTS (Eclipse). Я обновил свой ответ. Интересно, что по-разному работает с Eclipse. Кажется, что он не всегда правильно использует текущую среду. – nst1nctz
Да, это странно. Я тестировал его с помощью командной строки. –