Я использую Kotlin для создания веб-сервиса и наткнулся на то, что я считаю странным любопытством.С этим build.gradle:
group 'com.example'
version '0.1.0'
buildscript {
ext.kotlinVersion = '1.2.71'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
}
}
apply plugin: 'kotlin'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion"
compile 'com.fasterxml.jackson.module:jackson-module-kotlin:2.9.8'
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
Я получаю эту ошибку во время компиляции:
w: Runtime JAR files in the classpath should have the same version. These files were found in the classpath:
.../kotlin-stdlib-jdk8-1.2.71.jar (version 1.2)
.../kotlin-stdlib-jdk7-1.2.71.jar (version 1.2)
.../kotlin-reflect-1.3.10.jar (version 1.3)
.../kotlin-stdlib-1.3.10.jar (version 1.3)
.../kotlin-stdlib-common-1.3.10.jar (version 1.3)
ОК, нет проблем, jackson-module-kotlin
вытягивает зависимости kotlin 1.3.Я могу исключить их.Но то, что привлекло мое внимание, было второй строкой.kotlin-stdlib-jdk8
также вытягивает kotlin-stdlib-jdk7
.Фактически, я могу исключить это, и все по-прежнему работает, как и ожидалось:
compile("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion") {
exclude group: "org.jetbrains.kotlin", module: "kotlin-stdlib-jdk7"
}
Почему kotlin-stdlib-jdk8
тянет на мой путь к классу, казалось бы, ненужный kotlin-stdlib-jdk7
?