首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能创建一个kotlin多平台项目,引用公共模块的正确目标?

是否有可能创建一个kotlin多平台项目,引用公共模块的正确目标?
EN

Stack Overflow用户
提问于 2019-02-03 14:37:31
回答 1查看 354关注 0票数 2

如果我们想要与Kotlin一起构建一个多平台项目,并且我们有这样一个结构:

代码语言:javascript
复制
common
android
  android1
  android2
backend
  api1
  api2

common模块中,我们有3个目标/预置:

  • jvm (向所有基于jvm的项目提供通用代码)
  • jvmAndroid (所有jvm项目的通用代码,取决于jvm)
  • jvmApi (所有jvm项目都有通用代码,取决于jvm)

如何正确配置build.gradle文件,使其仅依赖于正确的预设/目标?

例如,如果我们希望在其他项目中使用公共模块作为依赖项,则需要使用以下内容:

代码语言:javascript
复制
dependencies {
  implementation project(':common')
}

但是,是否可以只使用公共模块的正确部分?像这样的东西(用于android 1和2)?

代码语言:javascript
复制
dependencies {
  implementation project(':common:jvmAndroid')
}

否则,当我们使用implementation project(':common')时,这将得到所有的jvm预设/目标,但有些代码只有在正确的平台上才有意义或工作(在本例中,是android或api)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-09 19:48:54

我们可以使用一种叫做消除目标歧义的策略来实现这个目标。

https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#disambiguating-targets

我们需要这样做:

代码语言:javascript
复制
val commonAttribute = Attribute.of("com.example", String::class.java)

jvm {
    attributes.attribute(commonAttribute, "nameOfYourTarget")
}

在“客户端”和“服务器”端。以同样的方式。

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

https://stackoverflow.com/questions/54503916

复制
相关文章

相似问题

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