A partir de Summer'2015, la respuesta de Peter Kahn sigue siendo válida. La activación del perfil basada en el entorno todavía es algo relativamente fácil en maven. Pero tenga en cuenta que org.apache.tools.ant.taskdefs.condition.Os.isFamily
no es exclusivo en el sentido de que si devuelve verdadero con un parámetro en particular no significa necesariamente que devuelve falso para ningún otro parámetro. Por ejemplo:
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))
}
}
devolverá true tanto para Os.FAMILY_MAC
y Os.FAMILY_UNIX
en MacOS. Por lo general, no es algo que necesite en los scripts de compilación.
No es sin embargo otra forma de lograr esto usando API 2+ Gradle, a saber:
import org.gradle.internal.os.OperatingSystem;
task detect {
doLast {
println(OperatingSystem.current().isMacOsX())
println(OperatingSystem.current().isLinux())
}
}
Salida doc para org.gradle.nativeplatform.platform.OperatingSystem interfaz. Vale la pena mencionar que esta interfaz está marcada con la anotación incubating, que es "la función es actualmente un trabajo en progreso y puede cambiar en cualquier momento". El espacio de nombres "interno" en la implementación también nos da una pista de que debemos hacerlo sabiendo que esto puede cambiar.
Pero personalmente iría con esta solución. Es solo que es mejor escribir una clase contenedora para no meter la pata en caso de que algo cambie en el futuro.
eso es lo que uso, sin la parte 'toLowerCase(). Contains()', ya que solo necesito el nombre. –
También puede obtener la versión del sistema operativo, con 'System.getProperty ('os.arch')' –
'" WINDOWS ".toLowerCase()' depende de la configuración regional y devolverá 'wındows' (observe el i sin puntos) en las máquinas donde la localidad es turca Use 'toLowerCase (Locale.ROOT)' en lugar de estar en el lado seguro. –