是否可以在 Kotlin 中使用多个公共库?

Does It possible to use multiple common libraries in Kotlin?

我尝试在 gradle 中使用 3 个模块构建项目,其中:
1) module1 - expect
的通用模块 空 build.gradle 依赖关系
2) module2 - 具有 expect 类 的公共模块以及模块 1 的依赖项:
build.gradle 依赖关系:compile project(':module1')
2) module3 - jvm 平台模块
build.gradle 依赖项:expectedBy project(':module2')

当我尝试编译项目时,在 module3 的编译阶段出现错误,类 from module2 couldn't find 类 from module1.

科特林 1.2.30
Gradle 4.6
Java1.8_161

是否可以在一个项目中同时使用多个公共模块?
是否可以在每个公共模块中包含 expect 类?

为此,它需要有多个 expectedBy 声明,目前是被禁止的。但是,正如 kotlin slack 中所说,这很快就会成为可能。

所以,目前需要切换到kotlin的1.2.40-dev-754版本,然后才能在[=13]中的build.gradle中添加第二个expectedBy依赖项=]:
expectedBy project(':module1')
expectedBy project(':module2')

目前不支持使用来自多个通用模块的通用声明,但计划在未来的版本中使用。

特别是,一旦 KT-22864 的修复程序发布,它将允许您将 module1module2 作为 expectedBy 依赖项添加到 module3.目前没有包含修复的 public 预览版本,请继续关注 1.2.40 EAP。


如果您真的想早点尝试,可以使用开发构建(例如 1.2.40-dev-754 来自 https://dl.bintray.com/kotlin/kotlin-dev Maven 存储库)。

您也可以尝试 IDE 插件的开发版本(来自 here),使 IDE 导入并分析多个 expectedBy正确依赖(1.2.30只能导入一个这样的依赖)。