在Exec类型的gradle任务中,为什么commandLine和可执行文件的行为不同?

时间:2013-04-02 23:43:13

标签: gradle

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

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

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

然而这很好用:

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

什么是commandLine,或者如何让它从它执行的shell中获取变量?为什么可执行文件才有效?

1 个答案:

答案 0 :(得分:39)

使用commandLine时,需要在空格上拆分字符串,否则可执行文件变为'ruby -v',而不是'ruby'。

所以试试这个:

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

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