首页 > 解决方案 > 使用 gradle 约定插件设置 kotlin jvmTarget 选项

问题描述

使用Gradle 约定插件在子项目之间共享通用配置,设置 Kotlin 编译器选项的正确方法是什么,例如jvmTarget

此插件设置导致构建工作正常,但 IntelliJ 不理解它,这使我认为这不是正确的方法:

plugins {
    id 'org.jetbrains.kotlin.jvm'
}

repositories {
    jcenter()
}

dependencies {
    // shared dependencies
}

tasks.named('test') {
    useJUnitPlatform()
}

tasks {
    compileKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    compileTestKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
}

该插件适用于这样的子项目:

plugins {
    id 'my.kotlin-conventions'
    id 'java-library'
}

我正在使用 Gradle 6.7、Kotlin 1.4.20。


编辑:有关 IntelliJ 问题的更多信息

在 IntelliJ 的子项目中,我看到了警告Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6. Please specify proper '-jvm-target' option。在根项目中,我看不到警告,仅在子项目中。构建和运行项目根本不会产生任何问题(或警告)。

示例:https ://github.com/nieldw/IntelliJ_Gradle_Convention_Plugin_Issue

标签: kotlingradleintellij-idea

解决方案



推荐阅读