2020 Ortası Güncellemesi : Hala kuluçka aşamasında:
OperatingSystem os = org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.currentOperatingSystem;
Erken 2019 Güncellemesi : current()
kaldırıldı.
org.gradle.nativeplatform.platform.OperatingSystem.getDisplayName()
org.gradle.nativeplatform.platform.OperatingSystem.isLinux()
Yine de kuluçka aşamasında olduğunu unutmayın .
2018 Ortası Güncellemesi : tıpkı yorumlarda belirtildiği gibi, şimdi bu sınıf farklı bir pakete taşındı, bu yüzden biri kullanmalıorg.gradle.nativeplatform.platform.OperatingSystem.current()
2015 ortası itibariyle, Peter Kahn'ın cevabı hala geçerli. Çevre tabanlı profil aktivasyonu, Maven'de hala nispeten daha kolay yapılan bir şey. Ancak org.apache.tools.ant.taskdefs.condition.Os.isFamily
bunun, belirli bir parametre ile doğru döndürülmesi durumunda, başka herhangi bir parametre için mutlaka yanlış döndürdüğü anlamına gelmediği anlamında dışlayıcı olmadığını unutmayın . Örneğin:
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))
}
}
Bu hem gerçek dönecektir Os.FAMILY_MAC
ve Os.FAMILY_UNIX
MacOS üzerinde. Genellikle, komut dosyalarında ihtiyacınız olan bir şey değildir.
Gradle 2+ API kullanarak bunu başarmanın başka bir yolu vardır:
import org.gradle.internal.os.OperatingSystem;
task detect {
doLast {
println(OperatingSystem.current().isMacOsX())
println(OperatingSystem.current().isLinux())
}
}
Org.gradle.nativeplatform.platform.OperatingSystem arabiriminin belgelerine bakın . Bu arayüzün kuluçka notuyla işaretlendiğini , yani "özellik şu anda devam eden bir çalışmadır ve herhangi bir zamanda değişebilir" olduğunu belirtmekte fayda var. Gerçeklemedeki "dahili" ad alanı da bize bunun değişebileceğini bilerek bunu kullanmamız gerektiğine dair bir ipucu verir.
Ama şahsen bu çözümü tercih ederim. Gelecekte bir şeylerin değişmesi ihtimaline karşı karıştırmamak için bir sarmalayıcı sınıfı yazmak daha iyidir.
toLowerCase().contains()
sadece isme ihtiyacım olduğu için parça olmadan kullandığım şey bu.