Atualização de meados de 2020 : Ainda incubando:
OperatingSystem os = org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.currentOperatingSystem;
Atualização do início de 2019 : current()
removida.
org.gradle.nativeplatform.platform.OperatingSystem.getDisplayName()
org.gradle.nativeplatform.platform.OperatingSystem.isLinux()
Tenha em mente que ainda está incubando .
Atualização de meados de 2018 : assim como foi mencionado nos comentários, agora esta classe mudou para um pacote diferente, portanto, deve-se usarorg.gradle.nativeplatform.platform.OperatingSystem.current()
Em meados de 2015, a resposta de Peter Kahn ainda é válida. A ativação do perfil com base no ambiente ainda é algo relativamente mais fácil no Maven. Mas tenha em mente que isso org.apache.tools.ant.taskdefs.condition.Os.isFamily
não é exclusivo no sentido de que se retornar verdadeiro com um parâmetro específico, não significa necessariamente que retornará falso para qualquer outro parâmetro. Por exemplo:
import org.apache.tools.ant.taskdefs.condition.Os
task detect {
doLast {
println(Os.isFamily(Os.FAMILY_WINDOWS))
println(Os.isFamily(Os.FAMILY_MAC))
println(Os.isFamily(Os.FAMILY_UNIX))
}
}
Ele retornará verdadeiro para Os.FAMILY_MAC
e Os.FAMILY_UNIX
no MacOS. Normalmente não é algo que você precisa em scripts de construção.
No entanto, existe outra maneira de fazer isso usando a API Gradle 2+, a saber:
import org.gradle.internal.os.OperatingSystem;
task detect {
doLast {
println(OperatingSystem.current().isMacOsX())
println(OperatingSystem.current().isLinux())
}
}
Verifique a documentação da interface org.gradle.nativeplatform.platform.OperatingSystem . Vale ressaltar que esta interface é marcada com anotação de incubação , ou seja, "o recurso está em andamento e pode ser alterado a qualquer momento". O namespace "interno" na implementação também nos dá uma dica de que devemos usá-lo sabendo que isso pode mudar.
Mas pessoalmente, eu escolheria essa solução. É só que é melhor escrever uma classe de wrapper para não bagunçar caso algo mude no futuro.
toLowerCase().contains()
parte, pois só preciso do nome.