gradle - 如何将项目依赖项添加到由 `kotlin-multiplatform` 插件创建的特定平台目标?
问题描述
以前,使用 Gradle 构建多平台项目依赖于每个目标平台的单独 Gradle 插件:kotlin-platform-common
、kotlin-platform-js
和kotlin-platform-jvm
.
从 Kotlin 1.3 开始,现在统一使用一个kotlin-multiplatform
插件。当前文档指定了如何使用这种方法设置多平台项目。
但是,在我的项目中,我有多个多平台项目,它们之间存在一些依赖关系。使用旧的多平台配置,每个不同的平台都是一个单独的模块,并且在项目之间添加依赖项需要将每个特定于平台的模块中的项目引用添加到另一个项目中的相应模块:例如,project(':some-library:some-library-js')
从另一个 JS 中添加对 JS 模块的依赖项模块。
在迁移到新的多平台配置时,我现在需要将使用旧配置方法配置的项目的依赖项添加到使用新kotlin-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')
}
推荐阅读
- java - Struts2 一类有 2 个结果错误?
- crystal-reports - 将 Sum 函数中的 2 列相乘会在 Crystal Formula Shop 中出现错误?
- bash - Jenkins - 执行 bash 脚本来部署应用程序
- postgresql - 如何改变迁移而不破坏任何东西?
- rest - 417 预期在 tableau restapi powershell 脚本上失败
- javascript - 表格列中的按钮不等待 onClick 事件
- angular - Angular 6中的数组排序不正确
- android - 有没有办法根据加速度计设置谷歌地图的方向?
- python - 如何从 docker compose 文件访问环境变量
- c# - c# 创建新标签页时添加分组框