Начиная с Grails 2.1 мы можем создавать оболочку Grails. Оболочка позволяет разработчику запускать команды Grails в проекте без предварительной установки Grails. Концепция обертки также доступна в других проектах из экосистемы Groovy, таких как Gradle или Griffon. Оболочка — это сценарий оболочки для Windows, OSX или Linux с именем grailsw.bat
или grailsw
парой файлов JAR для автоматической загрузки определенной версии Grails. Мы можем проверить скрипты оболочки и вспомогательные файлы в системе контроля версий и сделать ее частью проекта. Разработчики, работающие над проектом, просто проверяют код и запускают сценарий оболочки. Если установка Grails недоступна, она будет загружена.
Чтобы создать сценарии оболочки и вспомогательные файлы, кто-то в проекте должен выполнить команду обертки в первый раз. Этот разработчик должен иметь действующую установку Grails. Затем сгенерированные файлы могут быть добавлены в систему контроля версий, и с этого момента один разработчик может использовать сценарии grailsw
или grailsw.bat
оболочки.
$ grails wrapper | Wrapper installed successfully $
В корне проекта у нас есть два новых файла grailsw
и grailsw.bat
. Пользователи Windows могут использовать grailsw.bat
и другие операционные системы, которые мы используем grailsw
. Также создается новый каталог wrapper
с тремя файлами:
grails-wrapper-runtime-2.2.0.jar grails-wrapper.properties springloaded-core-1.1.1.jar
Когда мы запускаем сценарии grailsw
or grailsw.bat
в первый раз, мы видим, как Grails загружается и устанавливается в $USER_HOME/.grails/wrapper
каталог. Следующий вывод показывает, что файл загружается и извлекается, когда мы ранее не запускали grailsw
скрипт:
$ ./grailsw --version Downloading http://dist.springframework.org.s3.amazonaws.com/release/GRAILS/grails-2.2.0.zip to /Users/mrhaki/.grails/wrapper/grails-2.2.0-download.zip ..................................................................................... ................................................................ Extracting /Users/mrhaki/.grails/wrapper/grails-2.2.0-download.zip to /Users/mrhaki/.grails/wrapper/2.2.0 Grails version: 2.2.0
Когда мы хотим использовать новую версию Grails одной из потребностей разработчиков бежать запустить $ grails upgrade
затем $ grails wrapper
с новой версией Grails. Обратите внимание, что этот разработчик должен иметь локально установленную версию Grails той версии, для которой мы хотим создать оболочку. Вновь созданные файлы могут быть возвращены в систему контроля версий, и все разработчики проекта получат новую версию Grails при запуске сценариев grails
или grailsw.bat
сценариев оболочки.
$ ./grailsw --version Downloading http://dist.springframework.org.s3.amazonaws.com/release/GRAILS/grails-2.2.1.zip to /Users/mrhaki/.grails/wrapper/grails-2.2.1-download.zip ..................................................................................... ... ................................................................ Extracting /Users/mrhaki/.grails/wrapper/grails-2.2.1-download.zip to /Users/mrhaki/.grails/wrapper/2.2.1 Grails version: 2.2.1
Мы можем изменить местоположение загрузки Grails, например, для URL-адреса внутренней сети компании. В wrapper/
каталоге мы видим файл grails-wrapper.properties
. Файл имеет одно свойство wrapper.dist.url
, на которое ссылается по умолчанию http://dist.springframework.org.s3.amazonaws.com/release/GRAILS/
. Мы можем изменить это на другой URL, добавить изменение в контроль версий, чтобы другие разработчики получили изменение автоматически. И когда grailsw
сценарий оболочки будет выполнен, местом загрузки будет другой URL. Чтобы задать другой URL-адрес для загрузки при создании оболочки, мы можем использовать параметр командной строки —distributionUrl :
$ grails wrapper --distributionUrl=http://company.intranet/downloads/grails-releases/
Если нам не нравится имя каталога по умолчанию для хранения вспомогательных файлов, мы можем использовать параметр командной строки —wrapperDir . Затем файлы сохраняются в заданном каталоге, grailsw
а grailsw.bat
сценарии оболочки и будут содержать заданное имя каталога.
Написано с Grails 2.2.0 и 2.2.1