如何在Windows上管理使用多个Grails版本进行开发?

16
我们已经使用Grails一段时间了,并且已经经历了几个Grails版本。我们不总是想立即迁移我们的“旧”应用程序,但经常使用新版本进行新开发。更改Windows环境变量很不方便,因为有时我必须同时处理运行不同Grails版本的两个相关项目。
在Linux中,我可能会创建包装脚本或别名来允许我在命令行上指定版本切换,但我不认为Grails支持此功能。
其他需要针对多个Grails版本进行编码的人是如何管理它的?
更新: 我创建了一个gv.bat文件来设置GRAILS_HOME和PATH环境变量。我添加了一个GRAILS_INSTALLS环境变量(在我的计算机上为c:\usr\local\grails)并从我的PATH中删除了%GRAILS_HOME%\bin引用。
gv.bat
@echo off
SET GRAILS_HOME=%GRAILS_INSTALLS%\grails-%1
SET PATH=%GRAILS_HOME%\bin;%PATH%

为了进行任何 Grails 工作,我都运行 gv 1.1.2 或者我需要使用的版本。我想找出如何在 PATH 中进行字符串替换以更改该值,但这对我来说很困难。

10个回答

10

我有几个批处理文件,根据我使用的版本更改 GRAILS_HOME 和系统 PATH。这并不是最美观的解决方案,但至少对我有效。


1
它们很长吗?你介意发布更新PATH变量的那个吗? - ahanson

6

我有一个批处理文件,内容如下:

@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。

4

IntelliJ允许您指定每个项目的面向方面配置中要应用的Grails版本。 目前Eclipse插件还没有达到这种抽象水平。


新的Eclipse插件确实允许您在每个项目中设置使用哪个Grails版本。或者至少是插件的新版本。 - Blacktiger
你能引用一下来源吗?我听说他们正在努力允许这样做,但首先必须配置GROOVY版本。 - billjamesdev

3
我和你有同样的问题。对于我的问题,我编写了一个批处理脚本(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%

享受。


3
现在已经过去很长时间,GVM不再是曾经的那个工具。相反,我现在使用SDKMAN (https://sdkman.io/),并且随着Windows获得了一些类似于Linux的工具,或者使用Cygwin等,它也可以在Windows上安装。
------ 以下是旧回答 ------
GVM是用于Unix/Mac环境管理Groovy/Gradle/Grails/more版本的工具,最近有人开发了一个名为Posh-gvm (Power-shell GVM) 的Windows版本。它非常实用且易于使用,您可以在任何时候下载和配置这些工具的任何版本。
如果您正在使用IDE,则posh-gvm仍然是下载/安装新版本的好方法,并且您的IDE可以指向posh-gvm的安装目录。

我不再在Windows上开发,但这绝对是好的了解。 - ahanson
我无法弄清如何安装posh-gvm。网站文档说要通过键入“Install-Package posh-gvm”来安装,但这只会显示“未找到匹配项”。 - John Little
还尝试了“通过短脚本”方法,但在执行“Import-Module posh-gvm”时会出现“SecurityError:(:) [Import-Module],PSSecurityException”的错误,即使以管理员身份运行也是如此。尝试了32位和64位版本的powershell,但都无法安装这个东西。 - John Little

2
我在Windows中按以下步骤进行。

enter image description here

enter image description here

所以我只需要更改GRAILS_VER环境变量。 我可以随时更改我的Grails版本。

enter image description here


1
在Linux/Mac上,GVM是一个非常好的工具,可以安装和使用多个版本的Grails、Groovy等。你不能在Windows上使用GVM本身1,但是有一个名为posh-gvm的克隆版可以在Windows的Powershell下运行。
  1. 据我所知,这是因为Windows不支持符号链接。

1
我想修改这些答案的是路径处理。每次运行脚本并更改版本时,都会扩展您的路径一个节点。它能用,但很混乱。尝试创建一个没有引用JAVA_HOME或GRAILS_HOME的$path2,路径变为path2+grails+java。例如:set PATH="%PATH2%;F:\softwares\grails-2.3.1;path2java7。我添加Java7引用的唯一原因是我需要Java 6用于我的旧grails应用程序,而Java 7用于新的grails。

0

看看这个链接,它详细解释了如何使用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 clean,就可以愉快地使用了:
grails1.1 run-app 
grails12M4 run-app

最后,不同版本之间还有其他差异(例如新的1.2版本引入了依赖项DSL),但大多数情况下向后兼容性足够强,您可以想出一个共同点。

0

有些答案已经过时了。

现在最好的选择似乎是 SDKMAN!

SDKMAN!可以顺利安装在Mac OSX、Linux、WLS、Cygwin、Solaris和FreeBSD上。我们还支持Bash和ZSH shells。

也可以在Windows上安装,但是SDKMAN "不能在Windows上本地安装,需要WLS、Cygwin或MSYS+MinGW"。

之后,您可以选择Grails SDK以及您想要的版本。例如:

sdk install grails 1.3.7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接