2014-12-10 11 views
13

Czy istnieje sposób na wykonanie zadania w systemie Windows i na komputerze Mac, jeśli polecenia mają inną postać? Na przykład:Jak obsługiwać zadanie Gradle Exec dla komputerów Mac i PC?

task stopTomcat(type:Exec) { 

    // use this command line if on Windows 
    commandLine 'cmd', '/c', 'stop.cmd' 

    // use the command line if on Mac 
    commandLine './stop.sh' 
} 

Jak zrobiłbyś to w Gradle?

Odpowiedz

28

Można warunkowo ustawić właściwość commandLine na podstawie wartości właściwości systemowej.

if (System.getProperty('os.name').toLowerCase(Locale.ROOT).contains('windows')) { 
    commandLine 'cmd', '/c', 'stop.cmd' 
} else { 
    commandLine './stop.sh' 
} 
+0

Doskonały, Mark - dziękuję! – Ken

+1

BTW, znalazłem (przynajmniej dla Windows 8.1), że ciąg zwrócony jest "Windows 8.1" (duże W). Więc musisz albo użyć .contains ("Windows"), albo jeszcze lepiej, System.getProperty ("os.nazwa"). DoLowerCase(). Zawiera ("windows") będzie obejmować różnice w sprawie. – Ken

+0

Dzięki za złapanie tego. Zaktualizowałem swoją odpowiedź. –

Powiązane problemy