Comment mettre en place Kotlin du byte code version en Gradle projet de Java 8?
Dans Kotlin projet, ce qui est une bonne Gradle script pour s'assurer que mes classes sera compilé en byte code ver 52 (Java 8)?
Pour une raison quelconque, mes cours sont compilés en tant que ver 50 (Java 6) même si j'ai mis la source et la cible de compatibilité. Au moins c'est ce que l'Idée me montre quand j'ouvre le fichier de répertoire build/classes/...
après la construction du projet.
Mon jeu actuel ressemble à ça.
buildscript {
ext {
kotlinVersion = '1.0.5-2'
springBootVersion = '1.4.2.RELEASE'
}
repositories { mavenCentral() }
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}")
}
}
apply plugin: 'kotlin'
apply plugin: 'org.springframework.boot'
tasks.withType(JavaCompile) {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
## I also tried this and it hasn't helped
#sourceCompatibility = 1.8
#targetCompatibility = 1.8
repositories { mavenCentral() }
dependencies {
compile("org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}")
compile('org.springframework.cloud:spring-cloud-starter-stream-rabbit')
}
dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:Camden.SR2" } }
Vous devez vous connecter pour publier un commentaire.
Comme Mark l'a souligné sur Debop réponse, vous devez configurer à la fois
compileKotlin
etcompileTestKotlin
. Vous pouvez le faire sans duplication de cette façon:Pour un pur Kotlin projet, je ne pense pas que les options
sourceCompatibility
ettargetCompatibility
faire quelque chose, de sorte que vous pouvez être en mesure de les éliminer.Ref: https://kotlinlang.org/docs/reference/using-gradle.html#compiler-options
compileKotlin
etcompileTestKotlin
à l'aide de Kotlin DSL?org.jetbrains.kotlin.gradle.tasks.KotlinCompile::class.java
Kotlin 1.1 Gradle. dans une console, vous disposez d'une erreur sur
inline
(installées sur votre compilateur est de 1.0.x)Si la course gradle tâche dans IntelliJ IDEA, votre code compilé par kotlin 1.1 compilateur
Au cas où quelqu'un utilise gradle avec kotlin-dsl au lieu de groovy:
compileTestKotlin
?KotlinCompile
, de sorte que letasks.withType
bloc de configurer tous lesKotlinCompile
des tâches dans le projet.Kotlin 1.0 produit toujours la version 6 de Java fichiers de classe. Kotlin 1.1 support génération Java 8 fichiers de classe en passant
-jvm-target 1.8
pour le compilateur. Voirhttps://blog.jetbrains.com/kotlin/2016/07/first-glimpse-of-kotlin-1-1-coroutines-type-aliases-and-more/
pour une discussion de Java 7/8 soutien.
Pour quelqu'un comme moi qui utilisent maven pour générer du code mixte de kotlin et java intellij , vous devez définir
parce que maven build de ne pas respecter le jvmTarget définie dans le paramètre de projet.
thx pour seanf anwser ,mais si votre DSL kotlin est 1.3.0:
kotlin-dsl
a été déjà répondu avec une meilleure syntaxe est stackoverflow.com/a/45994990/627727