首页 > 解决方案 > 如何将项目依赖项添加到由 `kotlin-multiplatform` 插件创建的特定平台目标?

问题描述

以前,使用 Gradle 构建多平台项目依赖于每个目标平台的单独 Gradle 插件:kotlin-platform-commonkotlin-platform-jskotlin-platform-jvm.

从 Kotlin 1.3 开始,现在统一使用一个kotlin-multiplatform插件。当前文档指定了如何使用这种方法设置多平台项目

但是,在我的项目中,我有多个多平台项目,它们之间存在一些依赖关系。使用旧的多平台配置,每个不同的平台都是一个单独的模块,并且在项目之间添加依赖项需要将每个特定于平台的模块中的项目引用添加到另一个项目中的相应模块:例如,project(':some-library:some-library-js')从另一个 JS 中添加对 JS 模块的依赖项模块。

在迁移到新的多平台配置时,我现在需要将使用旧配置方法配置的项目的依赖项添加到使用新kotlin-multiplatform插件配置的项目中。

鉴于平台特定的模块现在由新插件指定和管理,我该怎么做?

标签: gradlekotlinkotlin-multiplatform

解决方案


我不确定以下方法是否是推荐的方法,或者我忽略了任何潜在问题,但我的项目编译并且所有测试都通过了。

在 Gradle 中,您可以将依赖项添加到特定的项目配置中:

dependencies {
    implementation project(path: ':some-library', configuration: 'configName')
}

通过反复试验,我发现为每个平台模块类型指定以下配置依赖项是可行的:

  • 常见的:configuration: 'archives'。如果没有这个,Gradle 配置将失败,因为找不到代码依赖项。

如果没有以下内容,编译将失败:

  • 虚拟机:configuration: 'jvmDefault'
  • js:configuration: 'jsDefault'

例如,对于问题中指定的 JS 模块:

dependencies {
    implementation project(path: ':some-library', configuration: 'jsDefault')
}

推荐阅读