我们现在已经使用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
中更换字符串以更改值,但结果对我来说很难
答案 0 :(得分:9)
我有几个bat文件根据我正在使用的版本更改GRAILS_HOME和系统PATH。
这根本不是最美丽的解决方案,但至少对我有用。
答案 1 :(得分:5)
我有一个批处理文件,如下所示。
@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
答案 2 :(得分:4)
IntelliJ允许您指定要作为每个项目构面配置应用的Grails版本。 Eclipse插件尚未实现这种抽象级别。
答案 3 :(得分:4)
现在很晚了,如果你使用命令行来运行它们,还有另一种管理Groovy和Grails版本的方法:Posh-gvm。 https://github.com/flofreud/posh-gvm
GVM是unix / mac环境管理Groovy / Gradle / Grails /更多版本的工具,有人最终制作了一个名为Posh-gvm的Windows等价物(Power-shell GVM的缩写)。对于您希望在任何时间点使用这些工具的任何版本,下载和配置环境非常有用且易于使用。
如果你正在使用IDE,posh-gvm仍然是下载/安装新版本的好方法,你的IDE可以指向posh-gvm安装目录。
答案 4 :(得分:3)
我和你有同样的问题。出于我的考虑,我编写了一个可从Windows PATH主页访问的批处理脚本(grails_version.bat
)。
将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%
享受。
答案 5 :(得分:2)
在Linux / Mac上,GVM是安装和使用Grails,Groovy等多个版本的绝佳工具。您不能在Windows 1 上使用GVM本身,但是有一个克隆posh-gvm将在Windows上的Powershell下运行。
答案 6 :(得分:2)
答案 7 :(得分:1)
关于这些答案,我要改变的是PATH处理。每次运行脚本并更改版本时,都会将路径扩展一个节点。它有效,但很乱。尝试创建$ path2而不引用您的JAVA_HOME或GRAILS_HOME,路径变为path2 + grails + java。示例:设置PATH =“%PATH2%; F:\ softwares \ grails-2.3.1; path2java7。
我添加Java7参考的唯一原因是我需要Java 6用于我的旧grails应用程序,Java 7用于更新的grails。
答案 8 :(得分:0)
查看this link,它解释了如何使用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
然后,使用applications.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),但大多数时候事情都向后兼容,你可以提出一个共同点。
答案 9 :(得分:0)
有些答案已经过时了。
似乎当今最好的选择是SDKMAN!:
SDKMAN!可在Mac OSX,Linux,WLS,Cygwin,Solaris和FreeBSD上顺利安装。我们还支持Bash和ZSH shell。
也可以在Windows上安装,但是SDKMAN“ 不能在Windows上本地安装,需要WLS,Cygwin或MSYS + MinGW ”。
之后,您可以choose the Grails SDK以及所需的版本。例如:
sdk install grails 1.3.7