2009-11-24 37 views
15

我們已經使用了Grails一段時間,現在已經通過了一些Grails版本。我們並不總是希望立即遷移我們的「舊版」應用程序,但通常會使用新版本進行新的開發。更改Windows環境變量不方便,因爲我有時必須同時運行兩個相關的項目,這些項目運行的是不同版本的Grails。如何管理使用Windows的多個Grails版本進行開發?

在Linux中,我可能會創建包裝腳本或別名,以允許我在命令行上指定版本切換,但我不相信Grails支持這一點。

其他人需要針對多個版本的Grails進行編碼管理嗎?

更新:
我創建了一個gv.bat文件來設置GRAILS\_HOMEPATH環境變量。我添加了一個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如何做一個字符串替換來更改值,但結果這對我來說很困難

回答

4

它現在要晚得多,並有另一種方式,如果你使用命令行來運行它們來管理你的Groovy和Grails版本:辣妹-GVM https://github.com/flofreud/posh-gvm

GVM是一個工具。 unix/mac環境來管理Groovy/Gradle/Grails /更多版本,最終有人制作了一個名爲Posh-gvm(Power-shell GVM的縮寫)的Windows等價物。它非常實用且易於下載和配置環境t用於任何時候您想要使用的這些工具的版本。

如果您使用IDE,posh-gvm仍然是下載/安裝新版本的好方法,並且您的IDE可以指向posh-gvm安裝目錄。

+0

我不再在Windows上開發,但這絕對是很好的知道。 – ahanson 2014-12-15 16:01:44

+0

我想不出如何安裝posh-gvm。網站文檔說通過鍵入「Install-Package posh-gvm」來安裝,但這只是給出了「找不到匹配」 – 2017-03-04 12:54:45

+0

也嘗試了「通過短腳本」方法,它給出了「SecurityError:(:) [Import-Module ],PSSecurityException「,當你執行」Import-Module posh-gvm「時,甚至以管理員身份運行。嘗試了32位和64位版本的PowerShell,沒有運氣安裝這個東西。 – 2017-03-04 13:07:49

8

我有幾個bat文件,它們根據以下內容更改GRAILS_HOME和系統PATH我正在使用哪個版本。

這不是最美麗的解決方案,但至少適合我。

+1

是長,你會介意張貼的更新PATH變量中的一個? – ahanson 2009-11-24 20:11:58

4

IntelliJ允許您指定將哪個版本的Grails應用爲每個項目構面配置。 Eclipse插件尚未達到這種抽象級別。

+0

新的Eclipse插件實際上允許您設置在每個項目的基礎上使用哪個grails版本。或者至少該插件的新泉源版本。 – Blacktiger 2009-11-24 22:49:44

+0

您能否引用來源?我聽說他們正在研究允許它,但配置GROOVY版本必須先來。 – billjamesdev 2009-11-25 02:38:53

0

檢查出this link,它解釋瞭如何使用cygwin和映射幾個別名。

另外,瞭解插件目錄如何爲每個Grails版本多次工作和複製它。我也經常使用全局插件,如tomcat,hibernate,dbUtil,控制檯等。

假設你想在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),但大多數時候事情向後兼容,以至於你可以提出一個共同的分母。

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% 

享受。

4

我有一個批處理文件,如下所示。

@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

在Linux/Mac上,GVM是安裝和使用Grails,Groovy中的多個版本的奇妙的工具來運行等等。您不能在Windows上使用GVM本身,但有一個克隆posh-gvm可以在Windows上的Powershell下運行。

  1. 據我所知,這是因爲Windows不支持符號連接
1

我想對這些問題的答案的東西是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 for新的Grails

1

我這樣做在Windows中如下。

enter image description here

enter image description here

所以我只是改變GRAILS_VER環境變量。 我可以隨時更改我的grails版本。

enter image description here