In gradle tasks of type Exec, why do commandLine and executable behave differently?
有没有人知道为什么Exec命令行和可执行文件类型的任务在继承环境变量方面表现不同?
例如,我无法运行此任务,因为Gradle无法从我的环境中找到ruby:
1 2 3 | task checkRubyVersionCommandLine(type: Exec) { commandLine 'ruby -v' } |
但这很好用:
1 2 3 4 | task checkRubyVersionExecute(type: Exec) { executable = 'ruby' args = ['-v'] } |
什么是commandLine,或者如何让它从它执行的shell中获取变量? 为什么可执行文件才有效?
使用commandLine时,需要在空格上拆分字符串,否则可执行文件变为'ruby -v',而不是'ruby'。
所以试试这个:
1 2 3 | task checkRubyVersionExecute(type: Exec) { commandLine 'ruby', '-v' } |
请参阅此处的代码以了解Exec任务如何处理此问题。