使用Java 9 module system和Kotlin混合编程时,由于Kotlin还未很好的支持而导致编译失败。这里给出相关的解决方法。参考连接
buildscript {
ext {
kotlinVersion = '1.2.41'
}
repositories {
mavenCentral()
}
dependencies {
classpath "gradle.plugin.org.gradle.java:experimental-jigsaw:+"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.41"
classpath "org.jetbrains.kotlin:kotlin-allopen:1.2.41"
}
}
repositories {
mavenCentral()
}
apply plugin: 'kotlin'
// 可以实现简单配置 Java 9 module system 插件
apply plugin: "org.gradle.java.experimental-jigsaw"
sourceCompatibility = 1.9
targetCompatibility = 1.9
compileKotlin {
kotlinOptions {
freeCompilerArgs = ["-Xjsr305=strict"]
jvmTarget = "1.8"
}
}
compileTestKotlin {
kotlinOptions {
freeCompilerArgs = ["-Xjsr305=strict"]
jvmTarget = "1.8"
}
}
// kotlin 1.2.41 版本并不能很好的支持 Java 9 module system
// 需要设置destinationDir路径解决编译问题
compileKotlin.destinationDir = compileJava.destinationDir
compileTestKotlin.destinationDir = compileJava.destinationDir
// 排除编译产生的重复class
jar { duplicatesStrategy = "EXCLUDE" }
dependencies {
compile 'com.fasterxml.jackson.module:jackson-module-kotlin'
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
compile "org.jetbrains.kotlin:kotlin-reflect"
}