目前我正在尝试将 Gradle 2.0 更新到 2.11。在 getting-started.html
我的 gradle 发行版 (2.11) 的文件描述了如何安装更新的 Gradle 版本。我将 .zip 解压到所需位置并解压。我设置环境变量GRADLE_HOME
因此,它包含在 PATH
中.
然而gradle -v
将打印:
-------------------------------------------------- ----------
Gradle 2.0
-------------------------------------------------- ----------
构建时间:2014-07-01 07:45:34 UTC
内部编号:无
修订: b6ead6fa452dfdadec484059191eb641d817226c
我使用 Get-Childitem env:GRADLE_HOME
检查了我的环境变量,它确实打印:
名称 值
---- -----
GRADLE_HOME C:\dev\programs\gradle-2.11
重新启动 PowerShell 甚至计算机都没有帮助。我还设置了一个指向 GRADLE_USER
的变量。 (这是一个 .gradle 文件夹)有一个已知的问题吗?还是我只是在安装过程中遗漏了一些东西?
最佳答案
仅当可执行文件位于 PATH
中列出的文件夹之一时,PowerShell 才会运行没有路径的可执行文件。环境变量($env:Path
在 PowerShell 中)。很可能您仍然拥有那里列出的旧安装的路径(类似于 ...;C:\dev\programs\gradle-2.0\bin;...
)。根据定义的位置,您需要在系统或用户环境中更改它。
您可以避免更新 PATH
使用 GRADLE_HOME
进行每次 Gradle 更新的环境变量里面的环境变量。但是,要使其正常工作,您必须将相应的注册表值设为 REG_EXPAND_SZ
。值(默认为 REG_SZ
)。系统环境存储在此注册表项中:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
The user environment is stored in this key:
HKEY_CURRENT_USER\Environment
You can change the type of the PATH
value to REG_EXPAND_SZ
with something like this:
$key = 'HKEY_CURRENT_USER\Environment'
$path = [Microsoft.Win32.Registry]::GetValue($key, 'PATH', $null)
$path += ';%GRADLE_HOME%\bin'
[Microsoft.Win32.Registry]::SetValue($key, 'PATH', $path, 'ExpandString')
或(更详细一点)像这样:
$key = 'HKEY_CURRENT_USER\Environment'
$path = [Microsoft.Win32.Registry]::GetValue($key, 'PATH', $null) -split ';' |
Where-Object { $_ -notlike '*gradle*' }
$path = (@($path) + '%GRADLE_HOME%\bin') -join ';'
[Microsoft.Win32.Registry]::SetValue($key, 'PATH', $path, 'ExpandString')
后者将在添加
GRADLE_HOME
之前从环境变量中删除现有的 Gradle 路径。 - 基于路径。更改
$key
到系统环境 key 来修改系统而不是您的用户环境(需要管理员权限)。通过把
%GRADLE_HOME%\bin
在 PATH
(并让操作系统通过将注册表值设为 REG_EXPAND_SZ
来扩展变量)PowerShell 将始终使用 gradle.exe
来自 bin
$env:GRADLE_HOME
中的目录.
关于powershell - Gradle -v 命令指向旧版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37339987/