2013-04-02 10 views
21

Czy ktoś wie, dlaczego w zadaniach typu Exec polecenia i pliki wykonywalne zachowują się inaczej w zakresie dziedziczenia zmiennych środowiskowych?W gradle zadań typu Exec, dlaczego polecenie commandLine i plik wykonywalny zachowują się inaczej?

Na przykład, nie mogę uruchomić to zadanie, ponieważ Gradle nie znajdzie rubin z mojego środowiska:

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

Jednak to działa prawidłowo:

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

Co jest commandLine dla, lub jak mogę zmusić go do pobrania zmiennych z powłoki, z której jest wykonywany? Dlaczego plik wykonywalny działa?

Odpowiedz

33

Podczas korzystania z polecenia Wiersz, musisz podzielić ciąg na spacje, w przeciwnym razie plik wykonywalny stanie się "ruby -v" zamiast "ruby".

Więc spróbuj zamiast tego:

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

Zobacz kod here aby zobaczyć, jak radzi sobie z tym zadaniem Exec.

+0

Sounds about right, Cheers. Matt. – matt

+0

nie jest "ruby -v" polecenie, które chce wykonać? – Vincent

+0

Link jest uszkodzony –

Powiązane problemy