Как вы справляетесь с разработкой нескольких версий Grails с помощью Windows?

Мы использовали Grails уже некоторое время и уже прошли несколько версий Grails. Мы не всегда хотим немедленно перенести наши "старые" приложения, но часто используем новую версию для новых разработок. Изменение переменных среды Windows неудобно, поскольку иногда мне приходится одновременно работать над двумя смежными проектами, в которых работают разные версии Grails.

В Linux я бы, вероятно, создал сценарии-оболочки или псевдонимы, чтобы позволить мне указывать в командной строке переключатель версии, но я не верю, что Grails поддерживает это.

Как другие, которым нужно кодировать против нескольких версий Grails, управляют им?

Обновить:
Я создал файл gv.bat, чтобы установить GRAILS\_HOME а также PATH переменные среды Я добавил GRAILS\_INSTALLS переменная окружения (c:\usr\local\grails на моей коробке) и убрал %GRAILS_HOME%\bin ссылка из моего PATH,

gv.bat

@echo off
SET GRAILS_HOME=%GRAILS_INSTALLS%\grails-%1
SET PATH=%GRAILS_HOME%\bin;%PATH%

Чтобы выполнить какую-либо работу Grails, я запускаю> gv 1.1.2 или любую другую версию, с которой мне нужно работать. Я хотел бы выяснить, как сделать замену строки в PATH изменить значение, но это оказалось трудным для меня

9 ответов

Решение

Сейчас намного позже, и есть еще один способ управления версиями Groovy и Grails, если вы используете их для запуска из командной строки: Posh-gvm. https://github.com/flofreud/posh-gvm

GVM - это инструмент для сред Unix/ Mac для управления версиями Groovy / Gradle / Grails / more, и кто-то наконец-то сделал эквивалент для Windows под названием Posh-gvm (сокращение от Power-shell GVM). Он очень полезен и прост в использовании для загрузки и настройки среды для любой версии этих инструментов, которую вы хотите использовать в любой момент времени.

Если вы используете IDE, posh-gvm по-прежнему является отличным способом загрузки / установки новых версий по мере их появления, и ваша IDE может указывать на каталоги установки posh-gvm.

У меня есть несколько файлов bat, которые изменяют GRAILS_HOME и системный PATH, в зависимости от того, какую версию я использую.

Это не самое красивое решение, но, по крайней мере, работает для меня.

У меня есть пакетный файл, который выглядит как ниже.

@ECHO OFF

if "%1"=="231" goto grails231
if "%1"=="232" goto grails232
if "%1"=="233" goto grails233
if "%1"=="234" goto grails234


goto end

:grails231
set GRAILS_HOME=F:\softwares\grails-2.3.1
set PATH=%GRAILS_HOME%\bin;%PATH%
goto end

:grails232
set GRAILS_HOME=F:\softwares\grails-2.3.2
set PATH=%GRAILS_HOME%\bin;%PATH%
goto end


:grails233
set GRAILS_HOME=F:\softwares\grails-2.3.3
set PATH=%GRAILS_HOME%\bin;%PATH%
goto end

:grails234
set GRAILS_HOME=F:\softwares\grails-2.3.4
set PATH=%GRAILS_HOME%\bin;%PATH%
goto end

:end

Это может быть выполнено как 'setgrails 233', и это установит grails 2.3.3

IntelliJ позволяет указать, какую версию Grails следует применять в качестве конфигурации фасета для каждого проекта. Плагин Eclipse еще не достиг этого уровня абстракции.

У меня та же проблема, что и у вас. Для моего беспокойства я написал пакетный скрипт (grails_version.bat) доступно из моего дома Windows PATH.

Настройте GRAILS_HOME на стандартную версию Grails, и каждый раз, когда вы хотите запустить приложение Grails в версии, отличной от стандартной, откройте командную строку, запустите пакетный скрипт (>grails_version) и выполните команды Grails (например: grails run-app).

Если вы используете IntelliJ, вы можете настроить версию Grails для каждого приложения.

Вот код:

@echo off

set v11=1.1
set v111=1.1.1
set v12M2=1.2-M2
set v12M3=1.2-M3
set v12M4=1.2-M4
set /p grails_version= What is the grails version (%v11%, %v111%, %v12M2%, %v12M3% (default), %v12M4%)?
if "%grails_version%" == "%v11%" goto :set_grails_home 
if "%grails_version%" == "%v111%" goto :set_grails_home 
if "%grails_version%" == "%v12M2%" goto :set_grails_home 
if "%grails_version%" == "%v12M3%" goto :set_grails_home 
if "%grails_version%" == "%v12M4%" goto :set_grails_home 
if "%grails_version%" == "" goto :set_grails_home_default 

:no_valid_input
echo The input version is not valid
exit

:set_grails_home_default
set grails_version=%v12M3%

:set_grails_home
set GRAILS_HOME=D:\Install\grails\grails-%grails_version%
path = %GRAILS_HOME%\bin;%PATH%
echo GRAILS_HOME=%GRAILS_HOME%

Наслаждаться.

В Linux/Mac GVM - это фантастический инструмент для установки и работы с несколькими версиями Grails, Groovy и т. Д. Сам GVM нельзя использовать в Windows1, но есть клон posh-gvm, который будет работать под Powershell в Windows,

  1. AFAIK это потому, что Windows не поддерживает символические ссылки

Я делаю это в Windows, как показано ниже.

Поэтому я просто изменяю переменную среды GRAILS_VER. Я могу изменить свою версию Grails в любое время.

В этих ответах я бы изменил обработку PATH. Каждый раз, когда вы запускаете скрипт и меняете версии, вы расширяете путь еще на один узел. Это работает, но грязно. Попробуйте создать $path2 без ссылки на ваш JAVA_HOME или GRAILS_HOME, и путь станет path2+grails+java. Пример: set PATH="%PATH2%;F:\softwares\grails-2.3.1;path2java7.

Единственная причина, по которой я добавляю ссылку на Java7, заключается в том, что мне нужна Java 6 для моего старого приложения Grails и Java 7 для более нового Grails.

Некоторые ответы устарели.

Кажется, что сейчас лучший вариант - это SDKMAN!:

SDKMAN! легко устанавливается на Mac OSX, Linux, WLS, Cygwin, Solaris и FreeBSD. Мы также поддерживаем оболочки Bash и ZSH.

Также возможна установка в Windows, но SDKMAN "не может быть установлен изначально в Windows и требует WLS, Cygwin или MSYS+MinGW".

После этого вы можете выбрать Grails SDK и нужную вам версию. Например:

sdk install grails 1.3.7

Проверьте эту ссылку, она объясняет, как именно это сделать, используя cygwin и отображая несколько псевдонимов.

Кроме того, узнайте, как работает каталог плагинов и скопируйте его несколько раз для каждой версии Grails. Я также использую глобальные плагины для тех, которые я часто использую, таких как tomcat, hibernate, dbUtil, console и т. Д.

Допустим, вы хотите переключиться между 1.1 и 1.2M4 - вы можете настроить эти каталоги с помощью используемых вами плагинов:

c:\Users\username\.grails\1.2-M4\projects\projectname\plugins

c:\Users\username\.grails\1.1.1\projects\projectname\plugins

Затем возьмите аппликации. Groovy и сделайте несколько копий, как

application.groovy.1.1
application.groovy.1.2M4

Теперь, чтобы переключиться, вам просто нужно переименовать application.groovy.X в application.groovy, и все готово (конечно, после запуска grails):

grails1.1 run-app 
grails12M4 run-app

Наконец, существуют другие различия между версиями (т. Е. В новой версии 1.2 вводятся зависимости DSL), но в большинстве случаев все обратно совместимо, и вы можете придумать общий знаменатель.

Другие вопросы по тегам