确定 Gradle 构建中的 JVM 供应商

Determine the JVM vendor in Gradle build

我知道 JavaVersion.current() 以确定正在使用的 JVM 版本。但是有没有办法判断 JVM 是否来自 Oracle、OpenJDK 等?

是的,总是有检查系统属性 "java.vendor" 的选项,但由于 Gradle 已经为 Java 版本处理了这个问题,我想知道提供者是否方便还有吗?

我不得不这样做,而系统属性是最好的方法。下面是将多个系统属性放入正在组装的 jar 的清单中的示例。

tasks.withType(Jar){
    manifest.attributes.putAll([
"java-vm-specification-version": System.getProperty("java.vm.specification.version"),
        "java-vm-specification-vendor" : System.getProperty("java.vm.specification.vendor"),
        "java-vm-specification-name"   : System.getProperty("java.vm.specification.name"),
        "java-vm-version"              : System.getProperty("java.vm.version"),
        "java-vm-vendor"               : System.getProperty("java.vm.specification.vendor"),
        "java-vm-name"                 : System.getProperty("java.vm.name"),
        "java-specification-version"   : System.getProperty("java.specification.version"),
        "java-specification-vendor"    : System.getProperty("java.specification.vendor"),
        "java-specification-name"      : System.getProperty("java.specification.name")
    ])
}

据我所知 Source Code,没有方便的函数来检索 Java 供应商字符串。 Gradle 依赖于系统 属性 java.vendor 以及内部代码。