如果我们想要与Kotlin一起构建一个多平台项目,并且我们有这样一个结构:
common
android
android1
android2
backend
api1
api2在common模块中,我们有3个目标/预置:
jvm (向所有基于jvm的项目提供通用代码)jvmAndroid (所有jvm项目的通用代码,取决于jvm)jvmApi (所有jvm项目都有通用代码,取决于jvm)如何正确配置build.gradle文件,使其仅依赖于正确的预设/目标?
例如,如果我们希望在其他项目中使用公共模块作为依赖项,则需要使用以下内容:
dependencies {
implementation project(':common')
}但是,是否可以只使用公共模块的正确部分?像这样的东西(用于android 1和2)?
dependencies {
implementation project(':common:jvmAndroid')
}否则,当我们使用implementation project(':common')时,这将得到所有的jvm预设/目标,但有些代码只有在正确的平台上才有意义或工作(在本例中,是android或api)。
发布于 2019-02-09 19:48:54
我们可以使用一种叫做消除目标歧义的策略来实现这个目标。
https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#disambiguating-targets
我们需要这样做:
val commonAttribute = Attribute.of("com.example", String::class.java)
jvm {
attributes.attribute(commonAttribute, "nameOfYourTarget")
}在“客户端”和“服务器”端。以同样的方式。
https://stackoverflow.com/questions/54503916
复制相似问题