【问题标题】:Modified PATH environment variable in Gradle script在 Gradle 脚本中修改了 PATH 环境变量
【发布时间】:2017-12-16 17:56:25
【问题描述】:

我正在运行 Gradle 脚本。一开始我打印PATH环境变量:

println System.getenv( 'PATH' )

输出是:

/usr/bin:/bin:/usr/sbin:/sbin

但真正的 PATH 环境变量是(从终端打印):

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sh........

问题是,为什么 PATH 环境变量在 Gradle 脚本和终端中不进行数学运算?

问题是,我正在构建 Android,它使用 Gradle 作为构建系统。我有 c++ 代码,它是由 CMake 构建的。在 CMake 中,我运行一些 python 脚本,这些脚本执行一些外部命令。但是当 Gradle 更改 PATH 变量时,找不到这些命令并且我收到错误消息。在执行这些命令时,不能选择使用完整路径,例如:

/usr/local/bin/my_mega_command

当我直接运行 CMake 或 python 脚本时,一切都按预期工作。

【问题讨论】:

  • 您是从命令行、Android Studio 还是通过其他方式运行 Gradle 任务?
  • @CommonsWare 好问题。检查。我从 Android Studio (Build-> Make Project) 构建了这样的问题。如果我从终端运行 Gradle build 命令,那么它就可以工作。我不会说这是一个问题,但是当您要调试时,那就太尴尬了:(

标签: android gradle environment-variables macos-high-sierra


【解决方案1】:

Android Studio 不会将其环境传递给它生成的 Gradle 守护程序。通常,我们以缺少自定义环境变量的形式看到这一点,但显然它也会影响PATH 的更改。

【讨论】:

  • 那么,选项将路径变量添加到 gradle.properties,然后将其添加到 PATH 环境变量?
  • @niparx:打败我。我不太清楚为什么“执行这些命令时不能使用完整路径”,我不知道您是否可以为从 Gradle 启动的那些命令更改 PATH。
  • “在执行这些命令时,不能选择使用完整路径” - 对于我的机器,这些命令(程序)可以有一个路径。我的同事可以有另一条路。所以,那个剧本对我有用,但对他不适用。
【解决方案2】:

我遇到了完全相同的问题,即从终端(在 Android Studio 内部或外部)运行 gradle 任务会正确地采用环境中设置的 PATH(即通过 .zprofile 或任何其他可能的方法),但在运行时不会通过 Android Studio 工具栏中的 Gradle 命令。最终对我有用的是将使用的 JDK 版本从 Android Studio (JDK 11) 附带的版本更改为 JDK 1.8,然后它突然起作用了。我不知道为什么这会改变任何东西,但是现在 PATH 是从系统中设置的环境中获取的,并且一切正常。

【讨论】:

    猜你喜欢
    • 2016-01-06
    • 1970-01-01
    • 2011-10-17
    • 2011-11-26
    • 1970-01-01
    • 2017-02-12
    • 2015-03-11
    • 2010-12-13
    • 2011-03-19
    相关资源
    最近更新 更多