Gradle -v 命令指向旧版本
Gradle -v command points to old version
目前我正在尝试将 Gradle 2.0 更新到 2.11。在我的 gradle 发行版 (2.11) 的 getting-started.html
文件中描述了如何安装较新的 Gradle 版本。我将 .zip 解压缩到所需位置并解压缩。我相应地设置了环境变量 GRADLE_HOME
,它包含在 PATH
.
中
然而 gradle -v
将打印:
------------------------------------------------------------
Gradle 2.0
------------------------------------------------------------
Build time: 2014-07-01 07:45:34 UTC
Build number: none
Revision: b6ead6fa452dfdadec484059191eb641d817226c
我使用 Get-Childitem env:GRADLE_HOME
检查了我的环境变量,它确实打印:
Name Value
---- -----
GRADLE_HOME C:\dev\programs\gradle-2.11
重新启动 PowerShell 甚至计算机都没有帮助。我还设置了一个指向 GRADLE_USER
的变量(指向 .gradle 文件夹)是否存在已知问题?或者我只是在安装过程中遗漏了什么?
PowerShell 将 运行 没有路径的可执行文件,仅当它们位于 PATH
环境变量(PowerShell 中的 $env:Path
)中列出的文件夹之一时。很可能您仍然在那里列出旧安装的路径(类似于 ...;C:\dev\programs\gradle-2.0\bin;...
)。根据定义的位置,您需要在系统或用户环境中更改它。
您可以避免在每次 Gradle 更新时更新 PATH
环境变量,方法是在其中使用 GRADLE_HOME
环境变量。但是,要使其正常工作,您必须将相应的注册表值设置为 REG_EXPAND_SZ
值(默认值为 REG_SZ
)。系统环境存储在此注册表项中:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
用户环境存储在此键中:
HKEY_CURRENT_USER\Environment
您可以将 PATH
值的类型更改为 REG_EXPAND_SZ
,方法如下:
$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
更改为系统环境密钥以修改系统而不是您的用户环境(需要管理员权限)。
通过将 %GRADLE_HOME%\bin
放入 PATH
(并让操作系统通过将注册表值设置为 REG_EXPAND_SZ
来扩展变量)PowerShell 将始终使用 gradle.exe
来自 bin
目录中的 $env:GRADLE_HOME
.
目前我正在尝试将 Gradle 2.0 更新到 2.11。在我的 gradle 发行版 (2.11) 的 getting-started.html
文件中描述了如何安装较新的 Gradle 版本。我将 .zip 解压缩到所需位置并解压缩。我相应地设置了环境变量 GRADLE_HOME
,它包含在 PATH
.
然而 gradle -v
将打印:
------------------------------------------------------------ Gradle 2.0 ------------------------------------------------------------ Build time: 2014-07-01 07:45:34 UTC Build number: none Revision: b6ead6fa452dfdadec484059191eb641d817226c
我使用 Get-Childitem env:GRADLE_HOME
检查了我的环境变量,它确实打印:
Name Value ---- ----- GRADLE_HOME C:\dev\programs\gradle-2.11
重新启动 PowerShell 甚至计算机都没有帮助。我还设置了一个指向 GRADLE_USER
的变量(指向 .gradle 文件夹)是否存在已知问题?或者我只是在安装过程中遗漏了什么?
PowerShell 将 运行 没有路径的可执行文件,仅当它们位于 PATH
环境变量(PowerShell 中的 $env:Path
)中列出的文件夹之一时。很可能您仍然在那里列出旧安装的路径(类似于 ...;C:\dev\programs\gradle-2.0\bin;...
)。根据定义的位置,您需要在系统或用户环境中更改它。
您可以避免在每次 Gradle 更新时更新 PATH
环境变量,方法是在其中使用 GRADLE_HOME
环境变量。但是,要使其正常工作,您必须将相应的注册表值设置为 REG_EXPAND_SZ
值(默认值为 REG_SZ
)。系统环境存储在此注册表项中:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
用户环境存储在此键中:
HKEY_CURRENT_USER\Environment
您可以将 PATH
值的类型更改为 REG_EXPAND_SZ
,方法如下:
$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
更改为系统环境密钥以修改系统而不是您的用户环境(需要管理员权限)。
通过将 %GRADLE_HOME%\bin
放入 PATH
(并让操作系统通过将注册表值设置为 REG_EXPAND_SZ
来扩展变量)PowerShell 将始终使用 gradle.exe
来自 bin
目录中的 $env:GRADLE_HOME
.