Подтвердить что ты не робот

В gradle задачах типа Exec, почему commandLine и исполняемый файл ведут себя по-разному?

Кто-нибудь знает, почему в задачах типа Exec commandline и исполняемый файл ведут себя по-разному с точки зрения наследования окружений vars?

Например, я не могу запустить эту задачу, потому что Gradle не удается найти ruby ​​из моей среды:

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

Но это прекрасно работает:

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

Что такое commandLine, или как я могу заставить его забрать переменные из оболочки, из которой она выполнена? Почему исполняемый файл просто работает?

4b9b3361

Ответ 1

При использовании командной строки вам нужно разбить строку на пробелы, иначе исполняемый файл станет "ruby -v" вместо "ruby".

Поэтому попробуйте это вместо:

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

См. код здесь, чтобы увидеть, как это работает с задачей Exec.