【问题标题】:Does It possible to use multiple common libraries in Kotlin?是否可以在 Kotlin 中使用多个通用库?
【发布时间】:2018-08-18 23:22:46
【问题描述】:

我尝试在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 的编译阶段出现错误,来自module2 的类无法找到来自module1 的类。

Kotlin 1.2.30
Gradle 4.6
Java 1.8_161

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

【问题讨论】:

    标签: kotlin kotlin-multiplatform


    【解决方案1】:

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

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


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

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

    【讨论】:

    • 我有一个类似的问题,给定 module1 有只应在测试中使用的类,我在 module2module3 中添加对它们的依赖项为 testCompile有 JVM 平台,不管我如何声明依赖,module3 看不到来自module1 的类或者它们不编译,有没有指导如何实现这个特定的用例?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-03-06
      • 2017-12-18
      • 2015-07-30
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多