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

时间:2018-03-10 13:52:50

标签: kotlin kotlin-multiplatform

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

当我尝试编译项目时,在module3的编译阶段出现错误,来自module2的类无法从module1找到类。

Kotlin 1.2.30
Gradle 4.6
Java 1.8_161

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

为此,它需要有多个expectedBy声明,现在禁止使用。{p}。但是,正如kotlin松弛所说,很快就会有可能。

所以,现在,需要切换到kotlin的1.2.40-dev-754版本,然后可以在{{1}中的build.gradle中为第二个expectedBy添加依赖项}。: module3
expectedBy project(':module1')