30

有谁知道为什么在 Exec 命令行和可执行类型的任务中,在继承环境变量方面表现不同?

例如,我无法运行此任务,因为 Gradle 无法从我的环境中找到 ruby​​:

task checkRubyVersionCommandLine(type: Exec) {
       commandLine 'ruby -v'
}

然而这很好用:

task checkRubyVersionExecute(type: Exec) {
    executable = 'ruby' 
    args = ['-v']
}

commandLine 的用途是什么,或者我怎样才能让它从执行它的 shell 中获取变量?为什么可执行文件只是工作?

4

1 回答 1

44

使用命令行时,您需要将字符串拆分为空格,否则可执行文件将变为“ruby -v”,而不是“ruby”。

所以试试这个:

task checkRubyVersionExecute(type: Exec) {
  commandLine 'ruby', '-v'
}

请参阅此处的代码以了解 Exec 任务如何处理此问题。

于 2013-04-03T10:01:02.810 回答