Как установить задачу compileJava ( 11) и задачу compileKotlin (1.8) для целевой совместимости jvm с одной и той же версией Java в build.gradle.kts?

#java #kotlin #android-gradle-plugin #dependencies #gradle-kotlin-dsl

Вопрос:

Build.gradle.kts

 buildscript {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
    dependencies {
        classpath ("com.android.tools.build:gradle:7.0.2")
        classpath ("org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30")
        classpath("gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:${Versions.spotbugsGradlePluginVersion}")
        classpath("se.bjurr.violations:violations-gradle-plugin:${Versions.violationsVersion}")

    }
}
//android {
//    compileOptions {
//        sourceCompatibility = JavaVersion.VERSION_11
//                targetCompatibility = JavaVersion.VERSION_11
//    }
//
//    kotlinOptions {
//        jvmTarget = JavaVersion.VERSION_11.toString()
//    }
//}
plugins {
    `maven-publish`
    `java-gradle-plugin`
    `kotlin-dsl`
    id ("io.gitlab.arturbosch.detekt") version ("1.18.1")
}
repositories {
    google()
    mavenCentral()
    gradlePluginPortal()
}

dependencies {
    compileOnly(gradleApi())
    testImplementation(gradleTestKit())
    testImplementation("junit:junit:${Versions.jUnitVersion}")
}
val generatedSources = tasks.register<GenerateVersionsFileTask>("generateSources")
 

ОШИБКА :
задача «compileJava» (текущая цель-11) и задача «compileKotlin» (текущая цель-1,8) совместимость с целью jvm должна быть установлена на одну и ту же версию Java.

Когда я раскомментирую android {} Ошибка : Ошибки компиляции скрипта:

  Line 15: android {
           ^ Unresolved reference: android
 

Спасибо за ваше время и усилия 🙂
Джитендра

Комментарии:

1. Обратите внимание, что если у вас нет источников Java (только источники Kotlin), это сообщение на самом деле вообще не должно появляться, см. также youtrack.jetbrains.com/issue/KT-48745 .

Ответ №1:

Вы можете установить версию java для java с помощью

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

или альтернативно:

 java {
    toolchain.languageVersion.set(JavaLanguageVersion.of(11))
}
 

и для котлина с:

 tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
    kotlinOptions {
        jvmTarget = "11"
    }
}
 

Все образцы находятся в gradle kotlin dsl.