kotlin-stdlib-jdk8 的作用
在 kotlin 1.8.0 之前,kotlin 的标准库 kotlin-stdlib
的 jvmTarget
是 Java 1.6,但是如果程序的 jvmTarget 是 1.7 或 1.8,则可以手动添加 kotlin-stdlib-jdk7
或 kotlin-stdlib-jdk8
来使用 kotin 对相关 Java 版本提供的 API (如:Java 1.7 中 AutoCloseable
相关的 API 和 Java 1.8 中 Stream
相关的 API)。
在 kotlin 1.8.0 中 kotlin 标准库的 jvmTarget 修改为了 1.8(kotlinc 的 jvmTarget 默认为 1.8,支持到 18),且将 kotlin-stdlib-jdk7 和 kotlin-stdlib-jdk8 中的代码也打包到了 kotlin-stdlib 中,同时将 kotlin-stdlib-jdk7:1.8.0
和 kotlin-stdlib-jdk8:1.8.0
及之后的版本中的 sourceSets 置为了空,而是仅仅将 kotlin-stdlib 作为其依赖进行传递,以保证兼容。
因此在 Kotlin1.8+ 中只需添加 kotlin-stdlib
的依赖即可,不再需要手动添加 kotlin-stdlib-jdk7
或 kotlin-stdlib-jdk8
的依赖。
相关 issue:
相关改动:
- Kotlin Compiler 1.8.0 中禁用了对 jvmTarget=1.6 的支持:Prohibit JVM target 1.6
- Kotlin Standard Library 1.8.0 的 jvmTarget 由 1.6 调整为 1.8:Switch JVM target of the standard libraries to 1.8
- Kotlin Standard Library 1.8.0 中将 kotlin-stdlib-jdk7 和 kotlin-stdlib-jdk8 中的源码路径移入了 kotlin-stdlib:Move contents of stdlib-jdk7/8 into stdlib