2013-04-02 50 views
21

有誰知道爲什麼類型Exec命令行和可執行文件的行爲在繼承環境變量方面表現不同嗎?在Exec類型的gradle任務中,爲什麼commandLine和可執行文件的行爲不同?

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

然而,這工作得很好:

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

什麼是命令行的,或者我怎麼能

舉例來說,我不能因爲搖籃未能找到我的環境紅寶石運行這個任務讓它從它執行的shell中獲取變量?爲什麼可執行文件正常工作

回答

33

當使用commandLine時,需要將字符串拆分爲空格,否則可執行文件變爲'ruby -v',而不是'ruby'。

那麼試試這個來代替:

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

看到代碼here看到Exec任務如何處理這一點。

+0

聽起來是正確的,乾杯。馬特。 – matt

+0

是不是'ruby -v'他願意執行的命令? – Vincent

+0

鏈接中斷 –

相關問題