首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将项目依赖项添加到由``kotlin多平台‘插件创建的特定平台目标中?

如何将项目依赖项添加到由``kotlin多平台‘插件创建的特定平台目标中?
EN

Stack Overflow用户
提问于 2019-03-21 12:39:28
回答 2查看 1K关注 0票数 2

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

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

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

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

考虑到特定于平台的模块现在由新插件指定和管理,我该如何做呢?

EN

回答 2

Stack Overflow用户

发布于 2019-03-21 12:51:01

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

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

代码语言:javascript
运行
复制
dependencies {
    implementation project(path: ':some-library', configuration: 'configName')
}

通过尝试和错误,我发现在每个平台模块类型中指定以下配置依赖项是可行的:

  • 常见:configuration: 'archives'.否则,由于找不到代码依赖项,Gradle配置将失败。

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

  • jvm:configuration: 'jvmDefault'
  • js:configuration: 'jsDefault'

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

代码语言:javascript
运行
复制
dependencies {
    implementation project(path: ':some-library', configuration: 'jsDefault')
}
票数 3
EN

Stack Overflow用户

发布于 2019-03-21 13:25:36

基本上,您不需要在涉及Kotlin Muiltiplatform项目的项目到项目依赖项中指定平台。Kotlin插件以Gradle将自动选择适当目标工件的方式设置依赖解决方案。

因此,例如,在Kotlin/JVM单目标项目中,您只需在多平台项目上使用project("...")依赖:

代码语言:javascript
运行
复制
dependencies {
    implementation(project(":multiplatform-library")
}

如果:multiplatform-library有一个JVM目标,这个依赖将被解析为JVM目标的工件。否则,在列出候选配置时,您将遇到依赖解决失败。

这在Kotlin引用( 使用分级添加依赖项构建多平台项目 )中有描述,但也适用于单一平台项目:

<...> --另一个多平台项目上的project('...')依赖项被自动解析为适当的目标。只要在源集的依赖项中指定一个project('...')依赖项就足够了,而包含源集的编译将收到该项目的相应平台特定工件,因为它有一个兼容的目标。

如果您没有遇到这种情况,请张贴特定的依赖解决故障日志,或者在https://kotl.in/issue上提交一个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55280650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档