Gradle -v命令指向旧版本

时间:2016-05-20 07:00:41

标签: powershell gradle updates

目前我正在尝试将Gradle 2.0更新为2.11。在我的gradle发行版的getting-started.html文件中(2.11)描述了如何安装较新的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文件夹)是否存在已知问题?或者我在安装过程中遗漏了什么?

1 个答案:

答案 0 :(得分:1)

只有当PowerShell位于PATH环境变量(PowerShell中的$env:Path)中列出的其中一个文件夹中时,PowerShell才会运行没有路径的可执行文件。很可能你仍然有那里列出的旧安装的路径(类似...;C:\dev\programs\gradle-2.0\bin;...)。根据定义的位置,您需要在系统或用户环境中对其进行更改。

通过使用PATH环境变量,您可以避免需要使用每个Gradle更新更新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中的class ViewController: UIViewController { var numbers = Numbers.singleton.numbers override func viewDidLoad() { print(numbers.count) Numbers.singleton.add(1) print(numbers.count) // prints 0 print(Numbers.singleton.numbers.count) // prints 1 } } class Numbers { static let singleton = Numbers() var numbers: [Int]! private init() { numbers = [] } func add(number: Int) { numbers.append(number) } } 目录。