If you have msysgit
set up on your Windows machine, then you have the two the requirements to install GVM: bash
and curl
. Unfortunately, the MinGW environment provided by Git doesn’t completely work. GVM installs fine, but when you go to install Groovy or Grails, you get an error like:
$ gvm install groovy
Downloading: groovy 2.2.2
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 28.3M 100 28.3M 0 0 2861k 0 0:00:10 0:00:10 --:--:-- 3033k
Installing: groovy 2.2.2
Done installing!
Do you want groovy 2.2.2 to be set as default? (Y/n): y
Setting groovy 2.2.2 as default.
ln: creating symbolic link /c/Users/Test/.gvm/groovy/current' to
/c/Users/Test/.gvm/groovy/2.2.2': Permission denied
And for Grails, it’s the same:
Setting grails 2.3.7 as default.
ln: creating symbolic link /c/Users/Test/.gvm/grails/current' to
/c/Users/Test/.gvm/grails/2.3.7': Permission denied
The files are in place, they just need to be properly symlinked. The PATH is ready to go, thanks to the gvm-init.sh
file that is sourced by GVM.
On Windows, just crack open a normal Command Prompt window and do:
C:\Users\Test>mklink /j .gvm\groovy\current .gvm\groovy\2.2.2 Junction created for .gvm\groovy\current > .gvm\groovy\2.2.2 C:\Users\Test>mklink /j .gvm\grails\current .gvm\grails\2.3.7 Junction created for .gvm\grails\current > .gvm\grails\2.3.7
Creating a Directory Junction is functionally equivalent to creating a symbolic link and easier to use, because Windows 7 Home Premium constantly complains if I try to do the latter (fixing this would require messing with the security policy, which is a pain in the ass for something that should Just Work):
C:\Users\Test>mklink /d .gvm\grails\current .gvm\grails\2.3.7 You do not have sufficient privilege to perform this operation.
Unfortunately, the gvm current
command will not work, but groovy
and grails
will work fine.
$ gvm c sh.exe": readlink: command not found sh.exe": readlink: command not found sh.exe": readlink: command not found sh.exe": readlink: command not found sh.exe": readlink: command not found sh.exe": readlink: command not found sh.exe": readlink: command not found sh.exe": readlink: command not found sh.exe": readlink: command not found No candidates are in use