16

我们使用 Grails 已经有一段时间了,现在已经使用了几个 Grails 版本。我们并不总是希望立即迁移我们的“旧”应用程序,而是经常使用新版本进行新开发。更改 Windows 环境变量很不方便,因为有时我必须同时处理两个运行不同版本 Grails 的相关项目。

在 Linux 中,我可能会创建包装脚本或别名以允许我在命令行上指定版本切换,但我不相信 Grails 支持这一点。

其他需要针对多个 Grails 版本进行编码的人如何管理它?

更新:
我创建了一个 gv.bat 文件来设置GRAILS\_HOMEPATH环境变量。我添加了一个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以更改值,但这对我来说很难

4

10 回答 10

10

我有几个 bat 文件,它们根据我使用的版本更改 GRAILS_HOME 和系统 PATH。

这根本不是最漂亮的解决方案,但至少对我有用。

于 2009-11-24T17:17:56.243 回答
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

于 2014-01-22T04:13:04.690 回答
4

IntelliJ 允许您指定应用哪个版本的 Grails 作为每个项目方面的配置。Eclipse 插件还没有达到这个抽象级别。

于 2009-11-24T19:56:45.207 回答
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%

享受。

于 2009-11-25T00:21:38.263 回答
3

现在已经很晚了,GVM 已经不是以前的工具了。相反,我使用 SDKMAN ( https://sdkman.io/ ),并且 Windows 获得了一些类似 linux 的工具,或者使用 Cygwin 等,它可以安装在 Windows 上。

------ 下面的旧答案 ------

GVM 是一个用于 unix/mac 环境管理 Groovy/Gradle/Grails/更多版本的工具,终于有人制作了一个 Windows 等价物,称为 Posh-gvm(Power-shell GVM 的缩写)。它非常有用且易于使用,可以随时为您想要使用的这些工具的任何版本下载和配置您的环境。

如果您使用的是 IDE,posh-gvm 仍然是下载/安装新版本的好方法,并且您的 IDE 可以指向 posh-gvm 安装目录。

于 2014-12-15T03:13:29.527 回答
2

我在 Windows 中执行以下操作。

在此处输入图像描述

在此处输入图像描述

所以我只是更改 GRAILS_VER 环境变量。我可以随时更改我的 grails 版本。

在此处输入图像描述

于 2016-11-22T05:48:27.207 回答
1

在 Linux/Mac 上,GVM是安装和使用多个版本的 Grails、Groovy 等的绝佳工具。您不能在 Windows 1上使用 GVM 本身,但是有一个克隆posh-gvm可以在 Windows 上的 Powershell 下运行.

  1. AFAIK 这是因为 Windows 不支持符号链接
于 2014-07-24T15:48:07.637 回答
1

关于这些答案,我要改变的是 PATH 处理。每次运行脚本并更改版本时,都会将路径再扩展一个节点。它有效,但很混乱。尝试创建一个不引用 JAVA_HOME 或 GRAILS_HOME 的 $path2,路径变为 path2+grails+java。示例:设置 PATH="%PATH2%;F:\softwares\grails-2.3.1;path2java7.

我添加 Java7 引用的唯一原因是我的旧 grails 应用程序需要 Java 6,而较新的 grails 需要 Java 7。

于 2014-07-25T17:22:02.603 回答
0

查看这个链接,它准确地解释了如何使用 cygwin 和映射多个别名来做到这一点。

此外,了解 plugins 目录是如何工作的,并为每个 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),但大多数情况下,事情是向后兼容的,您可以找到一个共同点。

于 2009-11-24T21:42:24.760 回答
0

有些答案已经过时了。

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

开发者!在 Mac OSX、Linux、WLS、Cygwin、Solaris 和 FreeBSD 上顺利安装。我们还支持 Bash 和 ZSH shell。

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

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

sdk install grails 1.3.7
于 2020-02-18T11:09:41.797 回答