【问题标题】:Target specific JVM with Kotlin and Gradle使用 Kotlin 和 Gradle 定位特定的 JVM
【发布时间】:2021-09-21 15:34:41
【问题描述】:

有什么区别

java {
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_11
}

compileKotlin {
    kotlinOptions {
        jvmTarget = "11"
    }
}

他们会在 gradle/Kotlin 库中实现相同的最终结果吗? jvmTarget 用于设置使用哪个标准库版本,我理解。

【问题讨论】:

    标签: kotlin jvm target


    【解决方案1】:

    kotlinOptions.jvmTarget 用于指定 JVM 标准库的版本,用作编译 JVM 特定 Kotlin 源集的依赖项(参见 javac 的 https://kotlinlang.org/docs/gradle.html#dependency-on-the-standard-library-bootclasspath 选项)。

    java.sourceCompatibility 确保 .java 文件使用指定版本的 Java 编程语言语法

    java.targetCompatibility 确保生成的 .class 文件将与指定的 JVM 兼容

    所以,这些选项是不等价的。

    无论如何,定义交叉编译参数的现代方式(从 Gradle 6.7+ 和 Kotlin 1.5.30+ 开始)是toolchain

    kotlin {
        jvmToolchain {
            (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(11))
        }
    }
    
    // Or its eqivalent:
    
    java {
        toolchain {
            languageVersion.set(JavaLanguageVersion.of(11))
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-07-03
      • 1970-01-01
      • 2018-05-15
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多