2014-12-10 7 views
13

C'è un modo per essere in grado di eseguire un'attività su Windows e Mac se i comandi assumono una forma diversa? Ad esempio:Come supporti un'attività di Gradle Exec per Mac e 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' 
} 

Come lo faresti a Gradle?

risposta

28

È possibile impostare condizionatamente la proprietà commandLine in base al valore di una proprietà di sistema.

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

Perfetto, Mark - grazie! – Ken

+1

BTW, ho trovato (almeno per Windows 8.1) che la stringa restituita è "Windows 8.1" (maiuscola W). Quindi è necessario utilizzare .contains ('Windows') o anche meglio, System.getProperty ('os.name'). ToLowerCase(). Contains ('windows') coprirà le differenze nel caso. – Ken

+0

Grazie per aver capito. Ho aggiornato la mia risposta. –

Problemi correlati